mongodb - 如何将元素插入 MongoDB 内部列表?

我在 MongoDB 中存储了以下文档:

{
    name: 'myDoc',
    list: [
        {
            id:1
            items:[
                {id:1, name:'item1'},
                {id:2, name:'item2'}
            ]
        },
        {
            id:2
            items:[
                {id:1, name:'item1'},
                {id:3, name:'item3'}
            ]
        }
    ]
}

我找到了一种使用 $addToSet 将元素添加到“列表”的方法,但我找不到将项目添加到特定“项目”列表的方法。

例如 我得到以下信息:

{id:5, name:'item5'} 

我想将它添加到列表中 id:2 的元素项中。

最佳答案

一种方法是使用 $push:

db.col.update(
    { name: 'doc', 'list.id': 2 }, 
    {$push: {'list.$.items': {id: 5, name: 'item5'}}}
)

http://docs.mongodb.org/manual/reference/operator/push/

您还可以将 $push 替换为其他运算符,例如(可能)$addToSet,以获得与您要查找的结果相似的结果。主要区别在于 $push 会将新元素附加到列表中,而 $addToSet 将添加不存在的元素(一组唯一的元素)。

https://stackoverflow.com/questions/13987365/

相关文章:

java - Mongo - 忽略属性被持久化

mongodb - 如何在 Mongo 中进行 "NOT IN"查询?

mongodb - 使用新的 _id 在 MongoDB 中复制文档

arrays - 更新 mongodb 中的嵌套数组

node.js - 处理 Mongoose 验证错误——在哪里以及如何处理?

ruby - 如何在控制台中禁用 MongoDB 日志消息?

javascript - 通过 JavaScript 直接访问 MongoDB

mongodb - 如何限制 mongodb 中更新文档的数量

node.js - 如何使用 Mongoose Promise - mongo

mongodb - 如何使用 mongodump 转储匹配特定日期范围的记录?