更新mongodb中的内部文档

时间:2014-08-26 18:16:02

标签: mongodb

我想在文档中添加一个数组,其中options.value ='选项3'。

{
  "category":"Lifestyle",
  "title":"Title 2",
  "_id":{
    "$oid":"53fcbe08f29403168bccc6a9"
  },
  "description":"Description 2",
  "postedOn":"Tue Aug 26 22:34:08 IST 2014",
  "options":[
    {
      "id":"ede7c211751e4028513fd876ad744ebc7b1035ed752abaa88f07ad47",
      "value":"option 3"
    },
    {
      "id":"7615718e768bcb1530119a4a02fedfc205bbabfef417047e8388d27c",
      "value":"option 4"
    }
  ]
}

请在mongo shell中建议一种方法。

1 个答案:

答案 0 :(得分:3)

我将重新提出你的问题,以确保我清楚你想要什么。

您想获取上面的文档并仅修改值等于“选项3”的子文档。

即。你想采取:

{
  "id":"ede7c211751e4028513fd876ad744ebc7b1035ed752abaa88f07ad47",
  "value":"option 3"
},

将其改为:

{
  "id":"ede7c211751e4028513fd876ad744ebc7b1035ed752abaa88f07ad47",
  "value":"option 3",
  "array":["Value1", "Value2"]
},

但是你不想改变数组中的所有子文档。

假设我的解释是正确的,那么我认为你想要的是位置算子:

http://docs.mongodb.org/manual/reference/operator/update/positional/

您应该可以执行以下操作:

db.collection.update({"options.value":"option 3"}, {$set:{"options.$.array":["Value1","Value2"]}}, false, false)