Wil*_*ill 151 python mongodb pymongo
我在查询我的mongoDB时尝试使用排序功能,但它失败了.相同的查询在MongoDB控制台中有效但在此处不起作用.代码如下:
import pymongo
from pymongo import Connection
connection = Connection()
db = connection.myDB
print db.posts.count()
for post in db.posts.find({}, {'entities.user_mentions.screen_name':1}).sort({u'entities.user_mentions.screen_name':1}):
print post
Run Code Online (Sandbox Code Playgroud)
我得到的错误如下:
Traceback (most recent call last):
File "find_ow.py", line 7, in <module>
for post in db.posts.find({}, {'entities.user_mentions.screen_name':1}).sort({'entities.user_mentions.screen_name':1},1):
File "/Library/Python/2.6/site-packages/pymongo-2.0.1-py2.6-macosx-10.6-universal.egg/pymongo/cursor.py", line 430, in sort
File "/Library/Python/2.6/site-packages/pymongo-2.0.1-py2.6-macosx-10.6-universal.egg/pymongo/helpers.py", line 67, in _index_document
TypeError: first item in each key pair must be a string
Run Code Online (Sandbox Code Playgroud)
我在其他地方找到了一个链接,说如果使用pymongo,我需要放置一个'u'的钥匙,但这也不起作用.其他人让这个工作或这是一个错误.
Ben*_*Ben 289
.sort()在pymongo,占用key和direction作为参数.
因此,如果你想要排序,id那么你应该这样做.sort("_id", 1)
对于多个字段:
.sort([("field1", pymongo.ASCENDING), ("field2", pymongo.DESCENDING)])
Run Code Online (Sandbox Code Playgroud)
小智 33
你可以试试这个:
db.Account.find().sort("UserName")
db.Account.find().sort("UserName",pymongo.ASCENDING)
db.Account.find().sort("UserName",pymongo.DESCENDING)
Run Code Online (Sandbox Code Playgroud)
Sne*_*mar 14
这也有效:
db.Account.find().sort('UserName', -1)
db.Account.find().sort('UserName', 1)
Run Code Online (Sandbox Code Playgroud)
我在我的代码中使用了这个,如果我在这里做错了,请评论,谢谢.
按_id降序排序:
collection.find(filter={"keyword": keyword}, sort=[( "_id", -1 )])
Run Code Online (Sandbox Code Playgroud)
按升序排序_id:
collection.find(filter={"keyword": keyword}, sort=[( "_id", 1 )])
Run Code Online (Sandbox Code Playgroud)
小智 6
为什么python使用元组列表而不是dict?
在python中,您无法保证字典将按您声明的顺序进行解释.
因此,在mongo shell中你可以这样做.sort({'field1':1,'field2':1}),解释器应该在第一级对field1进行排序,在第二级对第2级进行排序.
如果在python中使用了这个sintax,则有可能在第一级对field2进行排序.有了元组,没有风险.
.sort([("field1",pymongo.ASCENDING), ("field2",pymongo.DESCENDING)])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128421 次 |
| 最近记录: |