MongoDB コレクションから最後の 5 つのドキュメントを取得し、新しいドキュメントを探し続けます。これは 1 つのクエリで実行できますか、それとも本当に 2 つのクエリが必要ですか? 2 つのクエリの場合、追加のフィールドを追加せずにこれを達成するための最良の方法は何ですか?
任意の言語での回答は問題ありませんが、これは私が達成しようとしていることのnode.jsコード スニペットの例です (エラー処理は省略され、スニペットは質問に対する最初の回答に基づいて編集されます)。
MongoClient.connect("mongodb://localhost:1338/mydb", function(err, db) {
db.collection('mycollection', function(err, col) {
col.count({}, function(err, total) {
col.find({}, { tailable:true, awaitdata:true, timeout:false, skip:total-5, limit:5 }, function(err, cursor) {
cursor.each(function(err, doc) {
console.dir(doc); // print the document object to console
});
});
});
});
});
問題: 上記のコードは、最初のドキュメントから始まるすべてのドキュメントを印刷し、さらに待機します。オプションskip
とlimit
効果はありません。
質問: 5 つの最新ドキュメントを簡単に取得し、さらに追跡し続けるにはどうすればよいですか? node.jsである必要はありません。