Mongodb查找并修改原子性



我想知道如何引用返回的文档属性从中查找并在modify中使用它。E.x.:

var totalNoOfSubjects = 5;
db.people.findAndModify( {
    query: { name: "Tom", state: "active", rating: { $gt: 10 } },
    sort: { rating: 1 },
    update: { $set: { average: <reference score value returned by find>/totalNoOfSubjects} }
    } );

我的理解是findAndModify会锁定文档,因此我想使用find中的属性在modify中执行更新。这将使操作原子的

我想知道这是否得到了蒙戈的支持。

否,在findAndModify的更新部分,不能引用找到的文档中的值。在这方面与update相同。

因此,您不能以原子方式执行此操作,因为您需要首先获取文档,然后制作updatefindAndMondify以包含从获取的文档计算的值。

请参阅https://jira.mongodb.org/browse/SERVER-458在某种程度上,这可能在未来得到解决。

原子性正是findAndModify的原因。

正如文档中所述,Mongo将发现一个或多个文档(与指定的query匹配)修改一个文档(使用指定的update)。整个过程是原子性的。默认实现让Mongo返回找到的文档(处于未更改状态)。这可以使用new选项进行修改。

相关内容

  • 没有找到相关文章

最新更新