用戶:
{
_id: "userID",
array_1:[],
array_2:[]
}
我需要對此檔案進行兩次更新:
array_1包含具有獨特id屬性的物件。我需要找到一個 whereid=targetID并將其替換為newObject,如下所示:
User.updateOne(
{
_id: userID,
"array_1.id": targetID
},
{
"$set":{"array_1.$":newObject}
}
)
array_2包含物件,其中多個物件可以具有相同的id值。我需要更新array_2where中所有物件的 2 個屬性id=targetID,如下所示:
User.updateOne(
{
_id: userID,
"array_2.id": targetID
},
{
"$set": {
"array_2.$[elem].property_1": new_property_1,
"array_2.$[elem].property_2": new_property_2
}
},
{
"arrayFilters": [{ "elem.id": targetID }],
"multi": true
}
)
如果我單獨運行它,這兩個作業正常,但我如何將兩者結合在一個函式中?
uj5u.com熱心網友回復:
您可以使用 arrayFilters 組合它,就像您在第二個查詢中所做的一樣,
- 創建一個過濾器屬性
arr1并使用它來更新物件,
await User.updateOne(
{ _id: userID },
{
$set: {
"array_1.$[arr1]": newObject,
"array_2.$[elem].property_1": new_property_1,
"array_2.$[elem].property_2": new_property_2
}
},
{
arrayFilters: [
{ "elem.id": targetID },
{ "arr1._id": targetID }
]
}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/405575.html
標籤:
上一篇:Node.js應用程式錯誤:MongooseError:`openUri()`的`uri`引數必須是字串,得到“未定義”
