首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb findAndModify原子性

Mongodb findAndModify原子性
EN

Stack Overflow用户
提问于 2013-02-12 11:19:53
回答 2查看 2.1K关注 0票数 4

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

代码语言:javascript
复制
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是否支持这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-12 12:28:46

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

因此,您不能自动执行此操作,因为您需要首先获取文档,然后手工创建updatefindAndMondify以包含从获取的文档计算出的值。

有关将来可能解决此问题的一种方法,请参阅https://jira.mongodb.org/browse/SERVER-458

票数 1
EN

Stack Overflow用户

发布于 2013-02-12 12:15:23

原子性正是findAndModify出现的原因。

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14824845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档