簡體   English   中英

將嵌套文檔數組 mongodb 替換為 python

[英]replace nested document array mongodb with python

我在 mongodb 中有這份文件

{
  "_id": {
    "$oid": "62644af0368cb0a46d7c2a95"
  },
  "insertionData": "23/04/2022 19:50:50",
  "ipfsMetadata": {
    "Name": "data.json",
    "Hash": "Qmb3FWgyJHzJA7WCBX1phgkV93GiEQ9UDWUYffDqUCbe7E",
    "Size": "431"
  },
  "metadata": {
    "sessionDate": "20220415 17:42:55",
    "dataSender": "user345",
    "data": {
      "height": "180",
      "weight": "80"
    },
    "addtionalInformation": [
      {
        "name": "poolsize",
        "value": "30m"
      },
      {
        "name": "swimStyle",
        "value": "mariposa"
      },
      {
        "name": "modality",
        "value": "swim"
      },
      {
        "name": "gender-title",
        "value": "schoolA"
      }
    ]
  },
  "fileId": {
    "$numberLong": "4"
  }
}

我想更新嵌套數組文檔,例如帶有性別標題的名稱。 這有價值學校A,我想像身體一樣變成成人。 我在 post 請求中給出了 fileId 的參數編號,在 body 中我傳遞了這個

post request : localhost/sessionUpdate/4
and body:

{
    "name": "gender-title",
    "value": "adultos"
}

flask

@app.route('/sessionUpdate/<string:a>', methods=['PUT']) 
def sessionUpdate(a):
    datas=request.json
    r=str(datas['name'])
    r2=str(datas['value'])
    print(r,r2)
    r3=collection.update_one({'fileId':a, 'metadata.addtionalInformation':r}, {'$set':{'metadata.addtionalInformation.$.value':r2}})  
    return str(r3),200

我得到了 200,但文檔沒有更新為新值。

當您使用位置運算符$處理數組時,請確保您的 select 查詢以數組元素為目標。 您可以在下面的查詢中看到它以metadata.addtionalInformation數組為目標,條件是name: "gender-title"

db.collection.update({
  "fileId": 4,
  "metadata.addtionalInformation.name": "gender-title"
},
{
  "$set": {
    "metadata.addtionalInformation.$.value": "junior"
  }
})

這是供您參考的Mongo playground

暫無
暫無

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

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