[英]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 指南針上的外觀。
我需要在我的后端使用 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.