在 PyMongo 中使用 .sort

Posted

技术标签:

【中文标题】在 PyMongo 中使用 .sort【英文标题】:Using .sort with PyMongo 【发布时间】:2012-05-01 19:09:28 【问题描述】:

使用 PyMongo,当我尝试检索按“数字”和“日期”字段排序的对象时,如下所示:

db.test.find("number": "$gt": 1).sort("number": 1, "date": -1)

我收到此错误:

TypeError: if no direction is specified, key_or_list must be an instance of list

我的排序查询出了什么问题?

【问题讨论】:

【参考方案1】:

sort 应该是键-方向对的列表,即

db.test.find("number": "$gt": 1).sort([("number", 1), ("date", -1)])

这必须是一个列表的原因是参数的顺序很重要,dicts 在 Python

【讨论】:

这是 Python 中的列表的原因是sort() 的参数的顺序很重要,而字典在 Python 中没有顺序。 @AndréLaszlo 可以使用 OrderedDict() 吗? 这为我节省了大量的研究。 Little MongoDB Book 在排序示例中存在误导。 如果只有一个字段,可以是.sort("_id", 1) 在 python3.6+ 中,字典是有序的,所以如果有人愿意,可能值得向 pymongo 提出拉取请求,使其符合通用的 mongodb 语法。当然,在较旧的 python 版本上运行 pymongo 时,这将不起作用..

以上是关于在 PyMongo 中使用 .sort的主要内容,如果未能解决你的问题,请参考以下文章

使用 pymongo 在 mongoDB 中查找

在 PyMongo 中使用 $not $in $regex

使用 pyMongo 创建 ISODate

如何在python 2.7中使用pymongo进行多处理池

如何在 pymongo 中使用 upsert?

MongoDB:使用pymongo在一个集合中删除多个文档中的数组值