如何在pyMongo中获得最小值


8

我有一个包含多个字段的集合,我想从一个字段中获取最小值。我知道获取最大值的命令:

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

但不是一个获得最低要求的人。有没有办法做到这一点?

Answers:


10

您可以反转排序方向以获取最小值而不是最大值:

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

本示例假定:

  • myfield 是一个数值(因此排序顺序对于确定最小值或最大值是有意义的)
  • myfield在返回的匹配文档中存在(否则,KeyError当尝试引用不存在的字段时,Python将报告a )。
  • 集合中的所有文档都有一个myfield值(没有值的文档myfield将在最小数值之前排序)

为确保排序基于实际具有myfield值的文档,您可以将其添加$exists到查询条件中:

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

有关排序的更多信息,请参见:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.