【发布时间】:2022-02-06 08:09:37
【问题描述】:
我有一个包含嵌套数组的文档,我需要从中添加/删除项目。通常您通过 id 查询嵌套对象,但在这种情况下,动态对象 _id 不起作用,我需要通过嵌套配置文件 id 进行更新。
文档
{
title: 'Title',
members: [
{
profile: { id: '123', name: 'Foo' },
items: ['id1', 'id2', 'id3']
}
]
}
查询
我的想法是我需要某种 $elemMatch 和 $pushAll 组合,但似乎无法让它发挥作用。为了从数组中删除项目,我会将 push 换成 pull
await this.repo.findByIdAndUpdate(id, {
members: {
$elemMatch: { 'profile.id': '123' },
$pushAll: {
items: ['xxx', 'yyy'],
},
},
})
【问题讨论】:
标签: node.js mongodb mongoose nosql