我有一个用户集合,其中包含多个板块:
users : [
{
_id: '61234XXX'
plates: [
{
_id: '123'
'color': 'orange'
},
{
_id: '124'
'color': 'blue'
}
]
},
{
_id: '63456XXX'
plates: [
{
_id: '321'
'color': 'orange'
},
{
_id: '432'
'color': 'green'
}
]
}
]
我正在尝试找出一种方法,为每个用户向所有当前图版对象添加一个新字段:
我得说:
await User.findOneAndUpdate(
{ _id: '63456XXX' },
{
$set : {
[`plates.0.plateStyle`]: "testValue"
}
}
)
虽然这样做是可行的,但它并不适合这个目的。有没有更好的方法可以让我迭代?
1条答案
按热度按时间qnyhuwrf1#
您可以尝试以下查询:
下面我们使用array filters告诉mongo:如果您找到具有
_id: "61234XXX"
和exists the plates
的对象,则获取与plates
不为空匹配的文档(elem
)(以获取全部)并添加plateStyle
。示例here
此外,如果您通过
_id
查找,您将不需要updateMany
,因为_id
是唯一的,只有1或0个结果。