如何更新数组中对象内部的数组值。
{
"_id" : ObjectId("63c7ca9584535c160ee4aaed"),
"status" : "REJECTED",
"steps" : [
{
"_id" : ObjectId("63c7ca9884535c160ee4ab03"),
"status" : "REJECTED",
"stepUsers" : [
{
"_id" : ObjectId("63c7ca9884535c160ee4ab04"),
"status" : "REJECTED",
}
]
},
]
}
我尝试使用arrayFilters
更新,但没有成功。Mongo抛出错误MongoServerError: Found multiple array filters with the same top-level field name steps
Collection.updateOne({
_id: id
}, {
$set: {
"steps.$[steps].stepUsers.$[stepUsers].status": 'PENDING',
}
}, {
arrayFilters: [
{ "steps._id": step._id },
{ "steps.stepUsers._id": stepUser._id }
]
})
我需要更新集合中的steps.stepUsers.status
。
1条答案
按热度按时间mznpcxlj1#
尝试更改数组筛选器:
"steps.stepUsers._id"
-〉"stepUsers._id"
因为arrayFilters引用的是
[]
中的字符串,而不是它的路径。了解它在playground example上的工作原理