$elemmatch(query) gibt alle Zeilen in einem Array zurück, wenn es mindestens eine Zeile gibt, die den Abfragekriterien entspricht.
$elemMatch(projection) gibt nur die erste Zeile aller übereinstimmenden Zeilen zurück, wenn sie als Projektion verwendet wird.
Sie können ganz einfach alle übereinstimmenden Zeilen abrufen, indem Sie den Array-Aggregationsoperator $filter .
In diesem Szenario werden Produktdetails basierend auf den übergebenen Kriterien gefiltert.
aggregate([{
$match: {
"project_code": 'usha-fos'
}
}, {
$project: {
"agency_code": 1,
"client_code": 1,
"project_code": 1,
"product_details": {
"$filter": {
"input": "$product_details",
"as": "result",
cond: {
$eq: ["$$result.Division", "Electric Fans"]
}
}
}
}
}])