I am trying to filter the products from the product collection based on price.
Current Product Collection:
[
{
_id: ObjectId("56f277b1279871c20b8b4566"),
product_name:'sample product 1',
product_items:[
{
product_price: 50.99,
product_item_no: '123456789',
product_images:['default.png']
},
{
product_price: 11.99,
product_item_no: '683456789',
product_images:['default2.png']
}
],
product_status_is_active: true,
},
{
_id: ObjectId("56f277b1279871c20b8b4567"),
product_name:'sample product 2',
product_items:[
{
product_price: 12.99,
product_item_no: '45678923',
product_images:['default2.png']
},
{
product_price: 66.99,
product_item_no: '683456789',
product_images:['default4.png']
}
],
product_status_is_active: true,
}
]
mongoose query:
{
'$match': {
product_status_is_active: true,
product_items: { '$elemMatch': { product_price: { '$gte': 60, '$lte': 100 } } }
}
},
Current Output:
{
_id: ObjectId("56f277b1279871c20b8b4567"),
product_name:'sample product 2',
product_items:[
{ // This object should not display
product_price: 12.99,
product_item_no: '45678923',
product_images:['default2.png']
},
{
product_price: 66.99,
product_item_no: '683456789',
product_images:['default4.png']
}
],
product_status_is_active: true,
}
Expecting output like:
{
_id: ObjectId("56f277b1279871c20b8b4567"),
product_name:'sample product 2',
product_items:[
{
product_price: 66.99,
product_item_no: '683456789',
product_images:['default4.png']
}
],
product_status_is_active: true,
}
But the Output of my Query contains also the nonmatching product_price.
How I can force MongoDB to return only the product_price, which matched my query?
Greetings and thanks.