5

ドキュメントがあり、mongodb データベースにクエリを実行して、現在のドキュメントの後に挿入されたすべてのドキュメントを返す必要があります。

それは可能で、そのクエリを実行する方法は?

4

2 に答える 2

5

デフォルトの_idフィールドをオーバーライドしない場合は、そのobjectID(mongodb docsを参照)を使用して、時間による比較を行うことができます。たとえば、次のクエリは、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 に答える