MongoDB中用JavaScript删除指定用户购物车特定ID的商品对象
MongoDB嵌套数组元素删除方案
用updateOne搭配$pull是你要的正确操作,$unset只会把元素设为null,没法从数组里删掉目标对象。
直接可用的命令
db.users.updateOne( { _id: new ObjectId("66a35c99784aa722b15c9801") }, { $pull: { "cart.productsInCart.products": { id: 0 } } } )
关键部分说明
updateOne:因为用户ID是唯一的,所以只更新匹配到的第一个文档就行- 第一个大括号是匹配条件:精准定位
_id为你指定的那个ObjectId的用户 $pull里的路径"cart.productsInCart.products":要严格按照嵌套层级写,用双引号包裹整个路径,不然MongoDB识别不了多级嵌套的字段{ id: 0 }:告诉MongoDB要从products数组里移除所有id等于0的对象
特殊情况提示
如果你的productsInCart本身是一个数组(比如用户有多个购物车分组),那得调整命令:先在匹配条件里定位到对应的productsInCart元素,再用$占位符指向它,比如:
db.users.updateOne( { _id: new ObjectId("66a35c99784aa722b15c9801"), "cart.productsInCart.someField": "someValue" // 用来定位具体的productsInCart元素 }, { $pull: { "cart.productsInCart.$.products": { id: 0 } } } )
内容的提问来源于stack exchange,提问作者chris1234
相关产品推荐
相关产品推荐

