假设我有一个如下文件:
{
_id: '1'
persons: [
{
userId: 'user1',
changed: false
},
{
userId: 'user2',
changed: false
},
]
}
我可以像下面这样简单地更新persons
中的特定记录:
Model.findOneAndUpdate(
{
_id: '1',
'persons.userId': 'user1'
},
{
$set: { persons.$.changed: true }
},
{ new: true }
)
但是返回的document
将包含persons
数组中的每个元素,有什么办法可以让我获得与条件'persons.userId': 'user1'
匹配的特定数组元素?
答案 0 :(得分:1)
您可以将projection用作findAndModify
的参数之一,请尝试:
Model.findOneAndUpdate(
{
_id: "1",
"persons.userId": "user1"
},
{
$set: { "persons.$.changed": true }
},
{
new: true,
projection: {
persons: {
$elemMatch: { userId: "user1" }
}
}
}
)