我正在try 从购物车集合的物品数组中查找(并更新)特定对象. 购物车文档看起来像这样
{
_id: ObjectId("661fb9ddc2b236ae8703ba92"),
display_id: '38bd6126-02a1-47b9-b567-00aaf2eb076f',
user_id: ObjectId("661137f22a31832ceb92ddbc"),
items: [
{
product_id: ObjectId("6622376051d5886f39ac7365"),
size: ObjectId("660d444d0d7716ee24129675"),
qty: 3
},
{
product_id: ObjectId("662214f8cc5306f999369e99"),
size: ObjectId("660d444d0d7716ee24129675"),
qty: 2
},
{
product_id: ObjectId("662214f8cc5306f999369e99"),
size: ObjectId("660d444d0d7716ee24129674"),
qty: 2
}
],
__v: 4
}
我try 运行的查询是
db.carts.find({user_id: new ObjectId("661137f22a31832ceb92ddbc"), "items.product_id": new ObjectId("662214f8cc5306f999369e99"), "items.size":new ObjectId("660d444d0d7716ee24129675")}, {"items.$":1})
或者是mongoose
const doc = await Cart.findOne({
user_id: user_id,
"items.product_id": product_id,
"items.size": oldSize
},{"items.$":1})
理想情况下它应该返回这个对象:
{
product_id: ObjectId("662214f8cc5306f999369e99"),
size: ObjectId("660d444d0d7716ee24129675"),
qty: 2
}
但它返回这个:
{
product_id: ObjectId("6622376051d5886f39ac7365"),
size: ObjectId("660d444d0d7716ee24129675"),
qty: 3
},
请告诉我我做错了什么.