【发布时间】:2022-02-15 22:17:12
【问题描述】:
假设我们有以下集合,我对此没有几个问题:
{
"_id" : ObjectId("4faaba123412d654fe83hg876"),
"user_id" : 123456,
"total" : 100,
"items" : [
{
"item_name" : "my_item_one",
"price" : 20
},
{
"item_name" : "my_item_two",
"price" : 50
},
{
"item_name" : "my_item_three",
"price" : 30
}
]
}
在这种情况下,我必须同时更新 item_name 或价格,或者同时更新两者。
例如:如果我在 req.body 中提供 item_name,那么它应该只更新 item_name 并且价格保持不变,但如果我提供价格,则反之亦然。
基本上,我的意思是说它应该只更新 req.body 中提供的那个字段。
我试过了
const result = await User.updateOne(
{
user_id: 123456,
'items.item_name': 'my_item_two',
},
{ $set: { items: req.body } }
)
但这和我想要的一样,但它正在删除已经存在的剩余字段!
【问题讨论】:
标签: javascript node.js mongodb express mongoose