我目前遇到一个问题,我必须更新深层嵌套文档中的条目。现在简化我的问题,我有这个例子。假设我将汽车存储在MongoDB中。文档看起来像这样
{
Make: "BMW",
Model: "3Series",
Wheels: [
{
_id: someObjectId
Size: "19 inch",
Screws: [
{
_id: someObjectId
Type : "M15x40"
},
{
_id: someObjectId
Type : "M15x40"
}
]
}
]
}
现在,如果我想更新特定的Wheel,我的代码将看起来像这样
CarModel.findOneAndUpdate({
"_id": CarId, "Wheels._id": WheelId
}, {
"$set" : {
"Wheels.$.Size": NewSize
}
})
现在这可行。但是当我经历2个数组时,我对如何更新特定的螺丝感到非常迷惑。知道我该怎么做吗?
答案 0 :(得分:1)
您需要arrayFilters功能来定义多个嵌套数组的路径:
CarModel.findOneAndUpdate(
{ "_id": CarId },
{ $set: { "Wheels.$[wheel].Screws.$[screw].Type": "something" } },
{ arrayFilters: [ { 'wheel._id': WheelId }, { 'screw._id': screwId } ] })