$elemmatch(query) renvoie toutes les lignes d'un tableau lorsqu'il y a au moins une ligne correspondant aux critères de la requête.
$elemMatch(projection) renvoie uniquement la première ligne de toutes les lignes correspondantes lorsqu'il est utilisé comme projection.
Vous pouvez facilement obtenir toutes les lignes correspondantes en utilisant l'opérateur d'agrégation de tableau $filtre .
Dans ce scénario, les détails du produit seront filtrés en fonction des critères passés.
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"]
}
}
}
}
}])