mongoDB:更新嵌套数组对象 [英] mongoDB: Update nested array object

查看:59
本文介绍了mongoDB:更新嵌套数组对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望更新 ID 为 BAHx9KeKjuMePce6f 的嵌套对象:

I would like the nested object with the id BAHx9KeKjuMePce6f to be updated:

{
    "_id" : "sgG6G9XTvvjj7uxwQ",
    "target" : [
        {
            "title" : "content",
            "id" : "ePce6fBAHx9KeKjuM"
        },
        {
            "title" : "content",
            "id" : "BAHx9KeKjuMePce6f" <--
        }
    ]
}

所以这就是我尝试过的:

So this is what I tried:

var newData = { title: "new", one: "more", id: 'BAHx9KeKjuMePce6f' };

Collection.update(
    { _id: 'sgG6G9XTvvjj7uxwQ', 'target.id': 'BAHx9KeKjuMePce6f' }, 
    { $set: newData }
);

结果应该是:

{
    "_id" : "sgG6G9XTvvjj7uxwQ",
    "target" : [
        {
            "title" : "content",
            "id" : "ePce6fBAHx9KeKjuM"
        },
        {
            "title": "new", 
            "one": "more",
            "id" : "BAHx9KeKjuMePce6f"
        }
    ]
}

推荐答案

为了更新数组中的特定元素,您可以使用 mongodb 位置 $ 运算符.

In order to update specific element in array you can use mongodb positional $ operator.

尝试以下查询:

var newData = { title: "new", one: "more", id: 'BAHx9KeKjuMePce6f' };

Collection.update(
    { _id: 'sgG6G9XTvvjj7uxwQ', 'target.id': 'BAHx9KeKjuMePce6f' }, 
    { $set: { 'target.$': newData } }
);

这篇关于mongoDB:更新嵌套数组对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆