当前位置:  开发笔记 > 编程语言 > 正文

如何用pymongo对mongodb进行排序

如何解决《如何用pymongo对mongodb进行排序》经验,为你挑选了4个好方法。

我在查询我的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

我得到的错误如下:

Traceback (most recent call last):
  File "find_ow.py", line 7, in 
    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

我在其他地方找到了一个链接,说如果使用pymongo,我需要放置一个'u'的钥匙,但这也不起作用.其他人让这个工作或这是一个错误.



1> Ben..:

.sort()在pymongo,占用keydirection作为参数.

因此,如果你想要排序,id那么你应该这样做.sort("_id", 1)

对于多个字段:

.sort([("field1", pymongo.ASCENDING), ("field2", pymongo.DESCENDING)])


`.sort([("field1",pymongo.ASCENDING),("field2",pymongo.DESCENDING)])`对多个字段进行排序.
注意:升序:1,降序-1
对于那些寻找更多细节的人,这里有关于使用pymongo排序的文档的链接http://api.mongodb.org/python/current/api/pymongo/cursor.html#pymongo.cursor.Cursor.sort
知道为什么他们如此轻松地宰了{"field1":1,"field2":1} JSON符号?
@Nico - 请参阅下面的romulomadu答案

2> 小智..:

你可以试试这个:

db.Account.find().sort("UserName")  
db.Account.find().sort("UserName",pymongo.ASCENDING)   
db.Account.find().sort("UserName",pymongo.DESCENDING)  



3> Snehal Parma..:

这也有效:

db.Account.find().sort('UserName', -1)
db.Account.find().sort('UserName', 1)

我在我的代码中使用了这个,如果我在这里做错了,请评论,谢谢.



4> 小智..:

为什么python使用元组列表而不是dict?

在python中,您无法保证字典将按您声明的顺序进行解释.

因此,在mongo shell中你可以这样做.sort({'field1':1,'field2':1}),解释器应该在第一级对field1进行排序,在第二级对第2级进行排序.

如果在python中使用了这个sintax,则有可能在第一级对field2进行排序.有了元组,没有风险.

.sort([("field1",pymongo.ASCENDING), ("field2",pymongo.DESCENDING)])

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有