Mongodb 更新数组中的对象字段
在mondodb中,我想更新数组中对象的字段。示例数据库如下所示:Mongodb 更新数组中的对象字段,mongodb,Mongodb,在mondodb中,我想更新数组中对象的字段。示例数据库如下所示: { "_id" : ObjectId("5ad237559d30d918c89c7f46"), "myArray" : [ { "name" : "a", "name2" : "a", "value" : 900000 //<--- instead of this... }, {
{
"_id" : ObjectId("5ad237559d30d918c89c7f46"),
"myArray" : [
{
"name" : "a",
"name2" : "a",
"value" : 900000 //<--- instead of this...
},
{
"name" : "b",
"name2" : "b",
"value" : 0
}
]
},
{
"_id" : ObjectId("5ad238049d30d918c89c7f47"),
"myArray" : [
{
"name" : "b",
"name2" : "b",
"value" : 0
},
{
"name" : "c",
"name2" : "a",
"value" : 0 //... I want to update this
}
]
}
你可以用
很抱歉,我没有mongodb测试它,查询可能需要稍微调整一下
抱歉,我没有mongodb测试它,查询可能需要稍微调整一下,您需要执行
$elemMatch
以匹配数组中的特定项,然后可以使用位置运算符:
db.test.updateOne(
{ "myArray": { $elemMatch: { "name": "c", "name2"; "a" } } },
{ $set: { "myArray.$.value": 900000 } }
);
您需要执行
$elemMatch
匹配数组中的特定项,然后可以使用位置运算符:
db.test.updateOne(
{ "myArray": { $elemMatch: { "name": "c", "name2"; "a" } } },
{ $set: { "myArray.$.value": 900000 } }
);
db.test.updateOne(
{ "myArray": { $elemMatch: { "name": "c", "name2"; "a" } } },
{ $set: { "myArray.$.value": 900000 } }
);