使用mongodb更新嵌套的数组数据

时间:2012-10-30 05:48:43

标签: mongodb nested-sets insert-update

我有嵌套数据:

Object
_id: "90fac6ab-b88e-42a1-8e91-80ee25951ec7"
  answers: Array[4]
    0: Object
      name: "myData"
      owned_by: "273b7291-df2b-494c-bd9b-64e71283447e"
      score: 0

我正在尝试更新,只有我知道名字的特定嵌套answer。我只想增加score字段,我只知道name。如何实现这一目标?

到目前为止,我有这个:db.Question.update({_id: "90fac6ab-b88e-42a1-8e91-80ee25951ec7"}, "myData":{$inc: {score: 2}});

2 个答案:

答案 0 :(得分:1)

您希望根据回答者的姓名(我假设名称是什么)来增加每个答案的分数:

db.Question.update({
    _id: "90fac6ab-b88e-42a1-8e91-80ee25951ec7", 
    answers.name : "myData"
}, {$inc: {"answers.$.score": 1}})

应该有效。我在这里使用位置运算符来进入子结构以填充$http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator

答案 1 :(得分:0)

试试这个;

db.Question.update({ _id: "90fac6ab-b88e-42a1-8e91-80ee25951ec7", "answers.name": "myData" }, 
                   { $inc: { "answers.$.score": 2} });