簡體   English   中英

MongoDB:在同一文檔中更新 2 arrays

[英]MongoDB: updating 2 arrays in the same document

用戶:

{
_id: "userID",
array_1:[],
array_2:[]
}

我需要對此文檔進行兩次更新:

  1. array_1包含具有唯一id屬性的對象。 我需要找到一個id=targetID並將其替換為newObject ,如下所示:
User.updateOne(
    {
      _id: userID, 
      "array_1.id": targetID
    }, 
     {
       "$set":{"array_1.$":newObject}
     }
  )
  1. array_2包含對象,其中多個對象可以具有相同的id值。 我需要更新id=targetIDarray_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM