如果我没记错的话,MongoDB文档的ObjectId包含其创建的时间戳。仅更新集合中最新文档的最佳方法是什么?
所以说我有一堆游戏文档,每隔一段时间就创建一个新文档,每个分数都应保存到最近的游戏中,而不是以前的游戏。我想这样做是为了不将游戏对象存储在内存中。
答案 0 :(得分:2)
我尝试过几件事,但我无法在单一操作中完成。但是,您不需要将整个游戏对象存储在内存中。你可以要求最新的_id
。像这样的东西(shell伪语法)。
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}}})