如何在特定项目中更新数组中的mongodb
这是我在mongodb中的示例文档,我想在value key中更新 原始文件如何在特定项目中更新数组中的mongodb,mongodb,Mongodb,这是我在mongodb中的示例文档,我想在value key中更新 原始文件 "_id" : ObjectId("54c76632a2abd01508508225"), "del" : "N", "value" : [ { "1" : "A", "2" : "B", "fromDate" : ISODate("2015-02-13T20:59:28.947Z") } ] 我想在值字段中插入“3”:“C” 预期文件 "_id" :
"_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" }
}
}
)
谢谢
//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")
}
}
)
仅当值.1为“A”且值.2为“B”时,上述查询才会更新
亲爱的,我建议您不要以数字开头字段名,要使用$push字段类型,字段类型应为数组,当您尝试该查询时,它将推送到值而不是值。0;在这里,你们试图推到里面的物体,这是行不通的
db.collection.update(
{
_id : ObjectId("54c76632a2abd01508508225"),
"value.1" : "A",
"value.2" : "B"
},
{
$set: {
"value.$" : {
"1" : "A",
"2" : "B",
"3" : "C"
}
}
}
);
通过此查询,您可以替换值数组中的整个对象,或者我强烈建议重新考虑模式我认为
“value'
是一个数组,其中有一个带有编号键的文档,这更能说明存在预先存在的问题,而不是您应该继续的问题。”。为什么此文档应处于这种状态?编号键背后的目的是什么?可能是@Neil Lunn的副本我只将其放在样本数据中请帮助我帮助我们解释您的意思。如果这是一个示例,那么它不是一个好的数据结构。如果你有不同的真实数据,那么你需要证明这一点。模糊你真正需要做的事情并不能得到正确的答案。@Neil Lunn我知道,先生,但我们公司对数百万个文档使用了这种结构。我在显示>WriterResult({“nMatch”:0,“nUpserted”:0,“nModified”:0,“writeError”:{“code”:16836,“errmsg”:“位置运算符未从查询中找到所需的匹配项。未展开的更新:value.$.3”}}@Arav是否以字符而非数字开头字段名?”