【问题标题】:Mongodb increase part of objectMongoDB增加部分对象
【发布时间】:2012-07-16 12:02:17
【问题描述】:

我在更新记录时遇到问题。我的文档结构是这样的:

"_id" : "1141825507009",
    "person" : [
        {
            "amount" : 25,
            "id" : "1141825507009"
        }
]

我想将 person.amount 增加 3,其中 person.id 是 1141825507009。这很简单。 怎么样:

Increment person.amount  by 3 if person.id exist.
Add to person list with amount 3 and id 239something845 if person.id does not exist in list. 

【问题讨论】:

  • 是两个独立的操作还是一个非此即彼的操作?
  • @BryceAtNetwork23 我正在使用 PHP 驱动程序。我想在一个类似这样的操作中做到这一点:addtoset 但不是设置值递增它。

标签: mongodb mongodb-query


【解决方案1】:

我想你想要的是https://jira.mongodb.org/browse/SERVER-340。您可能想观看/投票。

如果您不需要以原子方式执行此操作,则可以执行以下操作:

db.foo.update({"person.id" : {$exists : false}, /* other criteria */}, 
    {$inc : {"person.amount":3}});
var result = db.runCommand({getLastError:1})
if (result.n == 0) { // nothing updated, person.id must exist
    db.foo.update({/* criteria */}, 
        {$addToSet : {person : {amount:3, id:"239something845"}}});
}

【讨论】:

  • 所以还没有实现。谢谢!
猜你喜欢
  • 2022-07-23
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
相关资源
最近更新 更多