0

如果我没记错的话,MongoDB 文档的 ObjectId 包含其创建的时间戳。仅更新集合中最新文档的最佳方法是什么?

假设我有一堆游戏文档,并且每隔一段时间就会创建一个新文档,并且每个分数都应该保存到最近的游戏,而不是以前的游戏。我想这样做是为了不将游戏对象存储在内存中。

4

1 回答 1

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}}})
于 2012-05-10T19:49:12.373 回答