4

我想知道如何从 find 中引用返回的文档属性并在 modify 中使用它。前任 :

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 支持。

4

2 回答 2

1

不,您不能在更新部分时引用找到的文档中的值 a findAndModify。在这方面是一样的update

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

请参阅https://jira.mongodb.org/browse/SERVER-458了解未来可能解决的一种方法。

于 2013-02-12T04:28:46.067 回答
-1

原子性正是findAndModify.

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

于 2013-02-12T04:15:22.767 回答