我有一个包含多个字段的集合,我想从一个字段中获取最小值.我知道获取最大值的命令:
collection.find_one(sort=[("myfield", -1)])["myfield"]
获得分钟不是一个.有没有办法做到这一点?
解决方法:
您可以反转排序方向以获得最小值而不是最大值:
# 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"]
有关排序的更多信息,请参阅:
> Use Indexes to Sort Query Results
> What is the compare order for BSON types?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。