我有這樣一個收藏:
{
"name": "Citroen",
"additionals": [ "tires", "windows", "seats", "belts" ],
"price": [ { "poor": 15.00 }, { "mid": 21.00 }, { "exl": 30.00 } ]
}
我想修改價格,verison例如從 21 到 23,我試過這個:
function mod(name, version, newprice){
results = db.Cars.update({"name":name}, {$set: {"price.[0].$":newprice}});
return results;
}
mod("Citroen", "mid", 23)
你能告訴我我做錯了什么嗎?
uj5u.com熱心網友回復:
您可以嘗試使用位置更新$,$exists檢查物件陣列中是否存在屬性,將異步/等待更新查詢,
async function mod(name, version, newprice){
return await db.Cars.update(
{
"name": name,
["price." version]: { $exists: true }
},
{ $set: { ["price.$." version]: newprice } }
);
}
mod("Citroen", "mid", 23);
操場
uj5u.com熱心網友回復:
由于您使用的是 JS,因此您可以創建 key 物件,以便您可以使用以下內容:
async function mod(name, version, newprice){
var setObj = {}
var setQuery = "price.$." version
setObj[setQuery] = newprice
var findQuery = "price." version
var findObj = {name:name}
findObj[findQuery]={$exists:true}
results = await db.Cars.update(findObj, {$set:setObj});
return results;
}
mod("Citroen", "mid", 23)
示例查詢如何在此處作業
也不要忘記async/await。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/325181.html
標籤:javascript 数据库 mongodb
