pyMongoで最小値を取得する方法


8

複数のフィールドを持つコレクションがあり、1つから最小値を取得したいのですが。私は最大値を取得するためのコマンドを知っています:

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

しかし、最小を取得するためのものではありません。これを行う方法はありますか?

回答:


10

ソート方向を逆にして、最大値ではなく最小値を取得できます。

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

この例では、次のことを前提としています。

  • myfield 数値です(したがって、ソート順は最小値または最大値を決定するのに意味があります)
  • myfield返された一致するドキュメントに存在します(それ以外の場合、PythonはKeyError存在しないフィールドを参照しようとするとレポートします)。
  • コレクション内のすべてのドキュメントにmyfield値があります(値を持たないドキュメントはmyfield、最小数値の前にソートされます)

並べ替えが実際にmyfield値を持つドキュメントに基づいていることを確認する$existsには、クエリ条件に追加できます。

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

ソートの詳細については、以下を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.