侧边栏壁纸
  • 累计撰写 793 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

如何在列表的列表插入元素

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 193 阅读 / 316 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

我在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/朴实/]

方案
您可以使用:-
> var toInsert = {id: 5, name: 'item6'}
> db.abc.update(
            { name: 'myDoc', list: { $elemMatch: { id: 2 } } },
            { $addToSet: { 'list.$.items': toInsert } }
  )
id部分将从length数组中找到带有id = 2的文档。然后,我们使用$位置元素在该数组索引处添加新元素。
参见id
您也可以只用length替换id
但是,当您要基于数组的多个元素进行更新时,使用id会更好。 例如,当您的匹配条件为2933370123048190190,而数组中的另一个字段为length:-
list: {$elemMatch: {id: 2, length: 5}}

0

评论区