我想知道如何引用返回的文档属性从中查找并在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
相同。
因此,您不能以原子方式执行此操作,因为您需要首先获取文档,然后制作update
或findAndMondify
以包含从获取的文档计算的值。
请参阅https://jira.mongodb.org/browse/SERVER-458在某种程度上,这可能在未来得到解决。
findAndModify
的原因。
正如文档中所述,Mongo将发现一个或多个文档(与指定的query
匹配)修改一个文档(使用指定的update
)。整个过程是原子性的。默认实现让Mongo返回找到的文档(处于未更改状态)。这可以使用new
选项进行修改。