如何有效地更新插入MongoDB集合的最新文档?

时间:2012-05-10 19:46:58

标签: c# mongodb mongodb-.net-driver

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

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

1 个答案:

答案 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}}})