I have a collection with 20 documents, and each of them has an array. i want to know how to search for an arrangement that is inside a document it looks like:
"exist" : 66658,
"warehouse" : [
{
"stock_I" : "available",
"prod_st" : "active",
"last_sale" : "2022-11-23",
"factura_uv" : 154368244,
"price" : 8
},
{
"stock_II" : "available",
"prod_st" : "active",
"last_sale" : "2022-04-18",
"factura_uv" : 879624124,
"price" : 8
},
{
"stock_III" : "available",
"prod_st" : "active",
"last_sale" : "2021-07-05",
"factura_uv" : 357846988,
"price" : 8
}
],
What i want to do is to be able to run a command that shows me only the products that are available in stock_II
my mongo version is 5.0.4
I'm grateful for your help
CodePudding user response:
db.collection.aggregate([
{
$match: {
"warehouse.stock_II": "available"
}
},
{
$set: {
warehouse: {
$filter: {
input: "$warehouse",
as: "w",
cond: { $eq: [ "$$w.stock_II", "available" ] }
}
}
}
}
])
db.collection.find({
"warehouse.stock_II": "available"
},
{
"warehouse.$": 1
})