我是使用MongoDB的新手。
我需要检索MongoDB集合中给定记录的先前记录。
非常感谢任何帮助。 谢谢。
答案 0 :(得分:2)
在所有条件相同的情况下,_id
字段的默认值为ObjectId
并且是单调的,或者不断增加。
这意味着给定一个已知的ObjectId
值,以下内容适用于检索紧接在其之前插入的文档:
db.collection.find(
{ "_id": { "$lt": ObjectId("538c271a19b3a188ca6135eb") }}
).sort({ "_id": -1 }).limit(1)
这是一般情况。唯一可能的差异是各种来源产生ObjectId
值,并且它们的时钟设置为不同的时间(如完全不同的UTC时间)。
因此,加上插入率,您可以考虑这对您来说是否足够好,除了罕见和管理不善的情况之外,不应该总是维持订单。
答案 1 :(得分:2)
我建议使用索引以获得最佳性能。
举个例子: 创建索引:
db.books.ensureIndex({book: 1}) // for next records in collection
db.books.ensureIndex({book: -1}) // for previous records in collection
下一个查询如下:
db.books.find({book: {$gt:"a"}}).sort({book: 1}).hint({book: 1}).limit(1)
上一个查询如下:
db.books.find({book: {$lt:"b"}}).sort({book: -1}).hint({book: -1}).limit(1)