我有一个文档,我需要查询 mongodb 数据库以返回在当前文档之后插入的所有文档。
是否有可能以及如何进行该查询?
如果您不覆盖默认的 _id 字段,则可以使用该 objectID(请参阅mongodb 文档)按时间进行比较。例如,以下查询将查找插入 curDoc 后插入的所有文档(假设没有覆盖 _id 字段):
>db.test.find({ _id : {$gt : curDoc._id}})
请注意,这些时间戳不是超细粒度的,如果您想要更细粒度的文档插入时间视图,我鼓励您将自己的时间戳字段添加到您正在插入的文档中,并使用该字段进行此类查询。
如果您使用插入时间戳作为参数,您可以像下面这样查询
> db.foo.find()
{ "_id" : ObjectId("514bf8bbbe11e483111af213"), "Name" : "abc", "Insert_time" : ISODate("2013-03-22T06:22:51.422Z") }
{ "_id" : ObjectId("514bf8c5be11e483111af214"), "Name" : "xyz", "Insert_time" : ISODate("2013-03-22T06:23:01.310Z") }
{ "_id" : ObjectId("514bf8cebe11e483111af215"), "Name" : "pqr", "Insert_time" : ISODate("2013-03-22T06:23:10.006Z") }
{ "_id" : ObjectId("514bf8eabe11e483111af216"), "Name" : "ijk", "Insert_time" : ISODate("2013-03-22T06:23:38.410Z") }
>
这里我的 Insert_time 对应于文档插入时间,以下查询将为您提供特定 Insert_time 之后的文档,
> db.foo.find({Insert_time:{$gt:ISODate("2013-03-22T06:22:51.422Z")}})
{ "_id" : ObjectId("514bf8c5be11e483111af214"), "Name" : "xyz", "Insert_time" : ISODate("2013-03-22T06:23:01.310Z") }
{ "_id" : ObjectId("514bf8cebe11e483111af215"), "Name" : "pqr", "Insert_time" : ISODate("2013-03-22T06:23:10.006Z") }
{ "_id" : ObjectId("514bf8eabe11e483111af216"), "Name" : "ijk", "Insert_time" : ISODate("2013-03-22T06:23:38.410Z") }
>