Estou tentando encontrar (e atualizar) um objeto específico da matriz de itens da coleção do carrinho. Um documento de carrinho se parece com isto
{
_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
}
A consulta que estou tentando executar é
db.carts.find({user_id: new ObjectId("661137f22a31832ceb92ddbc"), "items.product_id": new ObjectId("662214f8cc5306f999369e99"), "items.size":new ObjectId("660d444d0d7716ee24129675")}, {"items.$":1})
ou em mangusto
const doc = await Cart.findOne({
user_id: user_id,
"items.product_id": product_id,
"items.size": oldSize
},{"items.$":1})
Idealmente, ele deveria retornar este objeto:
{
product_id: ObjectId("662214f8cc5306f999369e99"),
size: ObjectId("660d444d0d7716ee24129675"),
qty: 2
}
mas retorna este:
{
product_id: ObjectId("6622376051d5886f39ac7365"),
size: ObjectId("660d444d0d7716ee24129675"),
qty: 3
},
Por favor, diga o que estou fazendo de errado.