Pymongo排序错误

时间:2014-03-01 11:42:07

标签: mongodb pymongo

我一直在试图通过ObjectId按照Pymongo的降序对Mongo集合中的文档进行排序,并使用此代码使用最后添加的记录

record = collection.find({}).sort('_id', -1).limit(1)

然而,我得到'预期的字符缓冲对象'错误。不知道这里发生了什么。 此外,如果有人能想到使用Pymongo从mongo集合中获取最后添加记录的更好方法,那将会很有帮助。

2 个答案:

答案 0 :(得分:0)

for item in collection.find().sort("_id", pymongo.DESCENDING).limit(1):
    # do something with your item.

答案 1 :(得分:0)

此错误向我表明您的“collection”变量包含字符串,而不是PyMongo Collection实例。我需要查看设置“集合”变量的代码,以了解您正在犯的错误。但是,让我们从顶部开始:

import pymongo
client = pymongo.MongoClient()
collection = client.db
cursor = collection.find({}).sort('_id', -1).limit(1)
record = cursor.next()

这将为您提供最近添加的文档,但并不总是最近添加的 most timestamp portion of an ObjectId只精确到一秒,并且由于它是在插入文档的客户端计算机上生成的,因此ObjectId会受到时钟偏差的影响。

当且仅当集合为capped时,您才能可靠地获取最后一个文档:

cursor = collection.find({}).sort('$natural', -1).limit(1)
record = cursor.next()