[英]MongoDB: updating 2 arrays in the same document
用戶:
{
_id: "userID",
array_1:[],
array_2:[]
}
我需要對此文檔進行兩次更新:
array_1
包含具有唯一id
屬性的對象。 我需要找到一個id=targetID
並將其替換為newObject
,如下所示:User.updateOne(
{
_id: userID,
"array_1.id": targetID
},
{
"$set":{"array_1.$":newObject}
}
)
array_2
包含對象,其中多個對象可以具有相同的id
值。 我需要更新id=targetID
的array_2
中所有對象的 2 個屬性,如下所示: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
}
)
如果我單獨運行這兩個工作正常,但我如何將兩者結合在一個 function 中?
您可以使用 arrayFilters 組合它,就像您在第二個查詢中所做的一樣,
arr1
並使用它來更新 object,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 }
]
}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.