私の記憶が正しければ、MongoDB ドキュメントの ObjectId には、その作成のタイムスタンプが含まれています。コレクション内の最新のドキュメントのみを更新する最善の方法は何ですか?
たとえば、ゲームのドキュメントがたくさんあり、新しいドキュメントが作成されるたびに、すべてのスコアを以前のゲームではなく、最新のゲームに保存する必要があるとします。ゲームオブジェクトをメモリに保存しないために、これを行いたいと思います。
私の記憶が正しければ、MongoDB ドキュメントの ObjectId には、その作成のタイムスタンプが含まれています。コレクション内の最新のドキュメントのみを更新する最善の方法は何ですか?
たとえば、ゲームのドキュメントがたくさんあり、新しいドキュメントが作成されるたびに、すべてのスコアを以前のゲームではなく、最新のゲームに保存する必要があるとします。ゲームオブジェクトをメモリに保存しないために、これを行いたいと思います。
私はいくつかのことを試しましたが、単一の操作ではできませんでした。ただし、ゲーム オブジェクト全体をメモリに保存する必要はありません。最新のものを求めることができます_id
。このようなもの(シェル疑似構文)。
var last_id = db.games.find({}, {_id: 1}).sort({_id: -1}).limit(1);
db.games.update({_id: last_id}, {$inc: {score: 1}});
さて、私はおそらく今寝るべきです。もちろん、findAndModifyを使用して実行できます。これがJSコードです。
db.runCommand({findAndModify: 'games',
sort: {_id: -1},
update: {$inc: {score: 1}}})