5

我有一个文档,我需要查询 mongodb 数据库以返回在当前文档之后插入的所有文档。

是否有可能以及如何进行该查询?

4

2 回答 2

5

如果您不覆盖默认的 _id 字段,则可以使用该 objectID(请参阅mongodb 文档)按时间进行比较。例如,以下查询将查找插入 curDoc 后插入的所有文档(假设没有覆盖 _id 字段):

>db.test.find({ _id : {$gt : curDoc._id}})

请注意,这些时间戳不是超细粒度的,如果您想要更细粒度的文档插入时间视图,我鼓励您将自己的时间戳字段添加到您正在插入的文档中,并使用该字段进行此类查询。

于 2013-03-21T21:57:39.623 回答
1

如果您使用插入时间戳作为参数,您可以像下面这样查询

> 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") }
> 
于 2013-03-22T06:26:38.967 回答