如何在特定项目中更新数组中的mongodb

时间:2017-06-27 09:06:40

标签: mongodb

这是我在mongodb中的示例文档,我想更新值键

原始文件

"_id" : ObjectId("54c76632a2abd01508508225"),
"del" : "N",
"value" : [
    {
        "1" : "A",
        "2" : "B",
        "fromDate" : ISODate("2015-02-13T20:59:28.947Z")
    }
]

我想插入" 3":" C"在价值领域

预期文件

"_id" : ObjectId("54c76632a2abd01508508225"),
"del" : "N",
"value" : [
    {
        "1" : "A",
        "2" : "B",
        "3" : "C",
        "fromDate" : ISODate("2015-02-13T20:59:28.947Z")
    }
]

我尝试了这个查询,但它会错误地创建

db.collection.update({ "_id" : ObjectId("54c76632a2abd01508508225")},
         {$push: { 
                    "value":{ "3":"C" } 
                  }
         }
         )

三江源

2 个答案:

答案 0 :(得分:0)

//Better You try Below Query
   db.collection.update(
        {
            "_id" : ObjectId("54c76632a2abd01508508225"),
            "value.1":"A",
            "value.2":"B",
        },
        {
            $set:{
                "value.$.3": "C"
            }
        },function(err,Status){
            if(!err){
                console.log("Update Successfully")
            }
        }
    )

上述查询仅在Value.1为“A”且Value.2为“B”

时更新

亲爱的,我建议你不要用数字

开始你的字段名称

答案 1 :(得分:0)

要使用$ push字段类型应该是一个数组,当您尝试使用该查询时,它将推送到值而不是value.0;在这里你试图推动内部对象,这是行不通的。

db.collection.update(
{ 
  _id : ObjectId("54c76632a2abd01508508225"),
    "value.1" : "A",
    "value.2" : "B"
},
{ 
  $set: {
          "value.$" : {
              "1" : "A",
              "2" : "B",
              "3" : "C"
              }
  }
}
);

使用此查询,您可以替换值数组中的整个对象,或者我强烈建议您重新考虑架构