如何在pymongo中对复合索引进行排序

时间:2017-04-04 18:56:17

标签: python mongodb pymongo

我在mongo db中有以下条目:

{ "_id" : { "t" : 1491329960, "id" : 2 } }
{ "_id" : { "t" : 1491329961, "id" : 2 } }
{ "_id" : { "t" : 1491329961, "id" : 3 } }
{ "_id" : { "t" : 1491329961, "id" : 3 } }

我需要找到特定t

的最大id

(假设test是集合和数据库名称以及特定的id = 2

在mongo客户端我需要运行:

db.test.find( { '_id.id' : 2 } ).sort( { '_id.t' : -1} ).limit( 1 )

但是,在pymongo中,以下不起作用

from pymongo import MongoClient as mc
mc()['test']['test'].find( { '_id.id' : 2 } ).sort( { '_id.t' }, -1 )[0]

并加注:

TypeError: first item in each key pair must be a string

我应该怎样做才能使用pymongo获得我想要的内容?显然,我可以在以后获取所有内容并在python中进行排序,但这在性能方面是错误的

1 个答案:

答案 0 :(得分:0)

Python语法与Javascript略有不同:

find( { '_id.id' : 2 } ).sort([('_id.t', -1)])[0]

“sort”采用(fieldname,direction)对的列表。