Cara mendapatkan nilai minimum dalam pyMongo


8

Saya memiliki koleksi dengan beberapa bidang, dan saya ingin mendapatkan nilai minimum dari satu. Saya tahu perintah untuk mendapatkan nilai maks:

collection.find_one(sort=[("myfield", -1)])["myfield"]

tetapi tidak satu untuk mendapatkan min. Apakah ada cara untuk melakukan ini?

Jawaban:


10

Anda dapat membalikkan arah pengurutan untuk mendapatkan nilai minimum alih-alih nilai maksimum:

 # Sort by myfield (ascending value) and return first document
 collection.find_one(sort=[("myfield", 1)])["myfield"]

Contoh ini mengasumsikan bahwa:

  • myfield adalah nilai numerik (sehingga urutan sortir masuk akal untuk menentukan minimum atau maksimum)
  • myfieldada dalam dokumen yang cocok yang dikembalikan (jika tidak, Python akan melaporkan KeyErrorketika mencoba referensi bidang yang tidak ada).
  • semua dokumen dalam koleksi memiliki myfieldnilai (dokumen yang tidak memiliki myfieldnilai akan diurutkan sebelum nilai numerik minimum)

Untuk memastikan penyortiran Anda didasarkan pada dokumen yang benar-benar memiliki myfieldnilai, Anda dapat menambahkan $existskriteria permintaan:

 collection.find_one({"myfield": {"$exists": True}}, sort=[("myfield", 1)])["myfield"]

Untuk informasi lebih lanjut tentang penyortiran, lihat:

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.