簡體   English   中英

如何更新mongoose中的子文檔數據?

[英]How to update the child document data in mongoose?

我需要將tQuan的值更新為15 ,其中tName股票數組中的FBK 我還沒有找到正確的答案。 請注意,我不允許更改架構的設計方式。 這是架構。

const stockSchema = mongoose.Schema(
    {
        tName: {type: String},
        tQuan: {type: Number}
    }
)

const userSchema = mongoose.Schema(
  {
    name: {type: String},
    balance: {type: Number},
    stocks: [stockSchema]
  }
);

這是它在我的 mongoDB 指南針上的外觀。

MongoDB 羅盤

我需要在我的后端使用 mongoose 和 express,所以這不是在 CLI 中完成的。 請幫我找出這個問題的答案,感謝您的幫助。

我找到了答案。 我會在這里發布,以防萬一對其他人有幫助。

User.updateOne({ name: 'Sam' , "stocks.tName" : "FBK"},
{
  $set: {
    "stocks.$.tQuan": 15
  }
}, (err) => {
  if(err) {
    console.error(err);
  } else {
    console.log("successfully updated");
  }
})

如果 stockSchema 沒有單獨存儲在數據庫中,我可以建議,我的意思是,如果您只想將 stockSchema 顯示為:

user{
_id:"id",
name:"example",
balance:12345,
stoks:[
{
tName:"name",
tQuan:1234,
}
]
}

在用戶服務或您調用保存、更新..等功能的任何地方:

 async function create(data) { const model = mongoose.model('User'); let arr=[] //tnamesArray from your form data.tnamesArray.forEach((name)=>{ let obj={} obj.tName=name arr.push(obj) }) //tQuansArray from your Form data.tQuansArray.forEach((quan,key)=>{ return arr[key].tQuan=quan; }) data.stocks=arr; const instance=new model(data); const savedInstance = await instance.save(); return savedInstance; }

暫無
暫無

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

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