让我们将这个简单的集合market_types_codes
包含2个文档:
col
要访问上一个时间戳(第二个文档中的一个),我首先执行了此请求
{
"_id" : ObjectId("5ca4bf475e7a8e4881ef9dd2"),
"timestamp" : 1551736800,
"score" : 10
}
{
"_id" : ObjectId("5ca4bf475e7a8e4881ef9dd3"),
"timestamp" : 1551737400,
"score" : 12
}
然后是a = db['col'].find({}).sort("_id", -1)
但是由于此集合中将有很多文档,所以我认为仅请求带有limit函数的最后一个文档会更有效,例如
a[0]['timestamp']
然后
a = db['col'].find({}).sort("_id", -1).limit(1)
因为只有一个,所以我可以在循环内声明变量。
那么三个问题:
谢谢! Python 3.6 / Pymongo 3.7
答案 0 :(得分:1)
如果在选择条件中使用具有唯一索引的任何字段,则应使用rank
方法,该方法将返回唯一与查询匹配的文档。
话虽这么说,find_one
方法将返回一个Cursor对象,并且不会将数据加载到内存中。
如果使用过滤器选项,则可能会获得更好的性能。现在,您的查询将进行集合扫描。
如果您不使用过滤器,并且想检索最后一个文档,那么干净的方法是使用Python内置的find
函数。您也可以使用next
方法。
next
答案 1 :(得分:0)
find()。sort()是如此之快,不必担心速度,它是访问光标第一个元素的最佳途径。