首页 > 解决方案 > mongodb更新子文档中的多个键

问题描述

有没有一种方法可以一次更新子文档中的多个键(在给定的子文档 _id 内),而不是像这样编写查询:

articles.updateOne(
    {
        _id: 123,
        'data._id': 5,
    },
    {
        $set: {
            'data.$.comments': 10,
            'data.$.visible': true,
        },
    },
);

样本文件:

{
    "_id" : 123,
    "data" : [ 
        {
            "_id" : 5
            "comments" : 8,
            "visible" : false,
            "status" : null,
        }
    ]
}

我正在寻找这样的解决方案:

        $set: {
            'data.$': { visible: true, comments: 10 },
        },

...换句话说:它是否能够提交一个带有几个键的对象来仅更新对象内的给定键并且保持现有键不变?就像 MySQL...UPDATE * ... SET foo = 'bar', test = 'hello', ...

标签: mongodb

解决方案


推荐阅读