簡體   English   中英

更新嵌套的 MongoDB 集合 (Pymongo)

[英]Updating nested MongoDB collection (Pymongo)

-編輯-

如何根據 1 個以上的條件使用 Pymongo 更新嵌套集合?

我的文檔是這樣的:

[{'_id': ObjectId('613eb154aee899694f934259'),
  'company': 
      [{'name': 'Flower shop', 
        'persons': 
            [{'personId': '1000',
              'personIdType': 'Passport/Others'},
             {'personId': '3000',
              'personIdType': 'Passport/Others'}
            ]}
      ]}
]

我想將 personId 1000 更新為 2000 因此,兩個條件是:objectId = '613eb154aee899694f934259' AND the personId = 1000

我很感激任何幫助。

@ray 的回答是正確的。 但是您必須將他的解決方案轉換為python。

下面的答案是在python中轉換的@ray答案的精確復制。

from pymongo import MongoClient
from bson.objectid import ObjectId


col = MongoClient()["temp"]["tmp9"]

col.update_many({
  "_id": ObjectId("613eb154aee899694f934259"),
}, {
  "$set": {
    "company.$[].persons.$[p].personId": "2000",
  }
},
  array_filters=[{"p.personId": "1000"}]
)

嘗試使用$set來設置personId字段。 您將需要 1 個$[]persons后面persons因為persons也是數組字段。

db.collection.update({
  "_id": ObjectId("613eb154aee899694f934259")
},
{
  "$set": {
    "company.$[].persons.$[].personId": 2000
  }
})

這是Mongo 游樂場供您參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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