【发布时间】:2017-08-30 03:20:23
【问题描述】:
我在 mongo db 中有以下条目:
{ "_id" : { "t" : 1491329960, "id" : 2 } }
{ "_id" : { "t" : 1491329961, "id" : 2 } }
{ "_id" : { "t" : 1491329961, "id" : 3 } }
{ "_id" : { "t" : 1491329961, "id" : 3 } }
我需要为特定的id找到最大的t
(假设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 中获取所有内容并进行排序,但这在性能方面是错误的
【问题讨论】:
-
mc()['test']['test'].find( { '_id.id' : 2 }, sort = [ ( '_id.t', -1 )] )[0]或mc()['test']['test'].find_one( { '_id.id' : 2 }, sort = [ ( '_id.t', -1 )] )似乎有效