我正在开发一个场景,必须根据MongoDB文档中的另一个字段增加/更新字段。现在Mongo尚未实现此功能,并且故障单仍然是打开的SERVER-11345。在这里,我找到了一种可行的方法:
db.topics.find({"_id": ObjectId("5af4c571a34051252c28d68d")}).snapshot()
.forEach(function(elem){
db.topics.update({"_id": elem._id}, {$inc:{"count":1}, $push:{ topic: {"_id":elem.count + 1,
"timestamp":ISODate("2018-05-10T22:19:29.064Z"), "body": "hello"}}})})
当然,这里的重要问题是,我们首先找到然后更新,这可能会导致问题,因为在find()完成之后和update()启动之前,该文档没有锁定。 有没有办法在MongoDB中将其作为原子操作来完成? 谢谢。