Mongodb 更新数组中的对象字段

Mongodb 更新数组中的对象字段,mongodb,Mongodb,在mondodb中,我想更新数组中对象的字段。示例数据库如下所示: { "_id" : ObjectId("5ad237559d30d918c89c7f46"), "myArray" : [ { "name" : "a", "name2" : "a", "value" : 900000 //<--- instead of this... }, {

在mondodb中,我想更新数组中对象的字段。示例数据库如下所示:

{
    "_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 } }
);