如果我没记错的话,MongoDB 文档的 ObjectId 包含其创建的时间戳。仅更新集合中最新文档的最佳方法是什么?
假设我有一堆游戏文档,并且每隔一段时间就会创建一个新文档,并且每个分数都应该保存到最近的游戏,而不是以前的游戏。我想这样做是为了不将游戏对象存储在内存中。
如果我没记错的话,MongoDB 文档的 ObjectId 包含其创建的时间戳。仅更新集合中最新文档的最佳方法是什么?
假设我有一堆游戏文档,并且每隔一段时间就会创建一个新文档,并且每个分数都应该保存到最近的游戏,而不是以前的游戏。我想这样做是为了不将游戏对象存储在内存中。
我已经尝试了几件事,但我无法在一次操作中完成。但是,您不需要将整个游戏对象存储在内存中。您可以只要求最新的_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}}})