关于MongoDB内嵌数组插入数据的问题

image.png
这是我的数据,如果我想在计算机1下面添加一个数据为student:张三的话,该如何操作,并且如果之后要删除这个张三让数据变回原来的,该如何操作呢?变更后的数据如下图,
image.png

阅读 3.7k
2 个回答

插入的话可以采用以下方式:

db.getCollection('temp').updateMany(
    // query 
    {},
    // update 
    {
        $set: {"children.$[].children.$[item].student": "张三"}
    },
    // options 
    {
        arrayFilters: [{'item.name':'计算机1'}], 
        multi: false, // update only one document
        upsert: false, // insert a new document, if no existing document match the query
    }
);

移除student字段
方式一:

db.getCollection('temp').updateMany(
    {},
    [{ $unset: "children.children.student"}],
    {}
);

方式二:

db.getCollection('temp').aggregate(
    [{ $unset: "children.children.student"}]
);

以上两种方式移除都会将 children[xxx].children 数组下所有子元素的 student 字段移除

添加字段参考:
https://thecodebarbarian.com/...

字段移除参考:https://docs.mongodb.com/manu...

补充回答:
移除 "计算机1" 对应的student

db.getCollection('temp').update(
    { "children.children.name": "计算机1" },
    { 
        $unset: {
            "children.$[].children.$.student": ""
        }
    }
);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题