在pymongo中使用查找

穆罕默德·丹尼·艾尔沙德

我想对.find()Python中的mongoDB使用这样的代码:

import pymongo

client = pymongo.MongoClient('mongodb://localhost:27000')
db = client['responsi']
cursor = db['produk']

for x in cursor.find({"pricing.pct_savings":{"$gt":25}}).sort({"pricing.pct_savings":-1}):
    print(x)

但是,它显示出这样的错误:

Traceback (most recent call last):
  File "Find.py", line 7, in <module>
    for x in cursor.find({"pricing.pct_savings":{"$gt":25}}).sort({"pricing.pct_savings":-1}):
  File "G:\PROGRAM FILES\Python\lib\site-packages\pymongo\cursor.py", line 708, in sort
    keys = helpers._index_list(key_or_list, direction)
  File "G:\PROGRAM FILES\Python\lib\site-packages\pymongo\helpers.py", line 69, in _index_list
    raise TypeError("if no direction is specified, "
TypeError: if no direction is specified, key_or_list must be an instance of list

如何解决这个问题?谢谢!抱歉,我英语成绩不好。

哈盖

相对于蒙戈外壳,pymongo需要keydirection作为参数传递给排序方法(或列表,但这是另一种形式是不相关的,你现在,我会告诉它太)
所以你的查询实际上应该是cursor.find({"pricing.pct_savings":{"$gt":25}}).sort("pricing.pct_savings", pymongo.DESCENDING)

另一种形式是获取字段名称和方向的元组列表,并允许您按多个字段进行排序,例如 collection.find().sort([('my_field_1',pymongo.DESCENDING), ('my_field_2',pymongo.ASCENDING)])

在此处查看相关文档https://api.mongodb.com/python/current/api/pymongo/cursor.html?highlight=sort#pymongo.cursor.Cursor.sort

您可以在这里https://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.ASCENDING找到ASCENDINGDESCENDING常量

BTW(与您的原始问题无关)db['produk']实际上是一个集合,而不是游标,因此最好将其称为集合而不是游标。游标是什么find()回报

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章