我想知道如何引用从find返回的文档属性并在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中执行更新。这将使操作成为原子操作。
我想知道mongo是否支持这一点。
发布于 2013-02-12 12:28:46
不可以,您不能在findAndModify的更新部分引用找到的文档中的值。在这方面它和update是一样的。
因此,您不能自动执行此操作,因为您需要首先获取文档,然后手工创建update或findAndMondify以包含从获取的文档计算出的值。
有关将来可能解决此问题的一种方法,请参阅https://jira.mongodb.org/browse/SERVER-458。
发布于 2013-02-12 12:15:23
原子性正是findAndModify出现的原因。
作为stated in the docs,Mongo将找到一个或多个文档(匹配指定的query ),修改一个文档(使用指定的update )。整个过程是原子的。默认实现让Mongo返回找到的文档(处于未更改状态)。可以使用new选项对其进行修改。
https://stackoverflow.com/questions/14824845
复制相似问题