在PyMongo中使用.sort

Ken*_*ers 100 python mongodb pymongo

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

db.test.find({"number": {"$gt": 1}}).sort({"number": 1, "date": -1})
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

TypeError: if no direction is specified, key_or_list must be an instance of list
Run Code Online (Sandbox Code Playgroud)

我的排序查询有什么问题?

geo*_*org 187

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

db.test.find({"number": {"$gt": 1}}).sort([("number", 1), ("date", -1)])
Run Code Online (Sandbox Code Playgroud)

这必须是一个列表的原因是参数的排序很重要,而且dict在Python中没有排序.

  • 这是Python中的一个列表的原因是`sort()`重要和dicts的参数的顺序不是在Python中排序的. (26认同)
  • 这为我节省了大量的研究费用.Little MongoDB Book在排序示例中误导. (9认同)
  • 如果只有一个字段,则可以为.sort(“ _ id”,1) (3认同)
  • 在 python3.6+ 中,dicts 是有序的,所以如果有人愿意的话,可能值得向 pymongo 提出请求以使其符合通用的 mongodb 语法。当然,在较旧的 python 版本上运行 pymongo 时,这不起作用.. (2认同)