Javascript 如何更新嵌套对象中的数据
我想使用mongoose更新嵌套对象中的数据。我的模型是:Javascript 如何更新嵌套对象中的数据,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我想使用mongoose更新嵌套对象中的数据。我的模型是: { _id:123, 购物车:[{ _身份证号码:321, 总价:110, 物品计数:1, 项目:[{ 标题:“产品123”, 数量:2 }] }] } 我想更新shoppingCart的商品数量。我阅读了文档,但不明白如何更新数量?您希望这样使用: 如果您的数据未填充(您共享的文档保存在一个集合中): 就我所记得的,没有直接的方法可以做到这一点。您应该先获取文档,然后根据需要进行更新。项目是嵌套的,因此每个项目都有一个id: con
{
_id:123,
购物车:[{
_身份证号码:321,
总价:110,
物品计数:1,
项目:[{
标题:“产品123”,
数量:2
}]
}]
}
我想更新shoppingCart的商品数量。我阅读了文档,但不明白如何更新数量?您希望这样使用:
如果您的数据未填充(您共享的文档保存在一个集合中): 就我所记得的,没有直接的方法可以做到这一点。您应该先获取文档,然后根据需要进行更新。项目是嵌套的,因此每个项目都有一个id:
const doc = await Model.findById(docId); // or find or findOne
const item = doc.shoppingCart.items.id(itemId);
item.quantity = 10;
await doc.save();
如果要按标题删除子文档,但没有itemId,则必须搜索所有项目并找到该项目的id,像以前一样获取子文档,执行item.remove()
,然后执行doc.save()
:
最好分享你迄今为止所做的事情。然后也分享模型,购物车显示为一个数组,我认为这没有意义
顺便说一句,mongoose有很好的文档,是您的好朋友:
暂时不考虑猫鼬,改变数量可以像
obj.shoppingCart[0]。物品[0]。数量=3代码>。不过,这看起来像是一个填充的db结果,所以我认为这不是解决问题的方法。如果我想删除一个项目,该怎么办。例如,如果我想删除一个名为“product123”的产品,我应该编写什么代码?
const doc = await Model.findById(docId); // or find or findOne
const item = doc.shoppingCart.items.id(itemId);
item.quantity = 10;
await doc.save();
const items = doc.shoppingCart[0].items;
const idx = items.findIndex((item) => item.title === 'product123');
const item = items.id(items[idx]._id);
item.remove();
doc.save();