我有一個這樣的 mongo db 檔案
id: ObjectId(asdlkjjas_48@$#),
_user: 4593oawifjaslef,
country: { US: false, CA: false, MX: false, FR: false }
name: "kevin"
age: 28
我收到來自前端的 post 請求,帶有 objectId(需要查詢此檔案)以及國家/地區代碼
所以我的用戶將他們的 Id 和 countryCode 發送到后端,我需要更新與該 ID 匹配的檔案,并且只更新嵌套在 country 中的 countryCode。
我嘗試這樣的事情
incomingNumber = await Collection.findById(numberId) // get our document by id
const code = 'US' // get our country code
collection.updateOne({_id: incomingNumber}, {$set: { country[code]: true }}) //trying to update only the field in country(object) that matches our supplied country code(ex. 'US')
uj5u.com熱心網友回復:
有人發布了幾秒鐘的答案,然后洗掉,重新發布你的答案,我會給你信用。
答案是
Collection.updateOne({_id: incomingNumber}, {$set: { country: { [code]: true}}})
我基本上需要一個額外的花括號。在這種情況下這對我有用,但是國家物件現在看起來像這樣
{ US: true },
我寧愿有
{ US: true, FR: false, MX: false, CA: false }
uj5u.com熱心網友回復:
為了保留country物件并保留未更新的鍵,您可以使用自其貓鼬以來的模板文字或使用方括號,
Collection.updateOne({_id: objectId}, {$set: { ["country." code]: true}})
或者
Collection.updateOne({_id: objectId}, {$set: { `country.${code}`: true}})
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/338558.html
標籤:javascript 反应 mongodb 猫鼬
