这是我在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" }
}
}
)
三江源
答案 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"
}
}
}
);
使用此查询,您可以替换值数组中的整个对象,或者我强烈建议您重新考虑架构