$elemmatch(query) retorna todas as linhas em uma matriz quando há pelo menos uma linha correspondendo aos critérios da consulta.
$elemMatch(projeção) retorna apenas a primeira linha de todas as linhas correspondentes quando usada como projeção.
Você pode obter facilmente todas as linhas correspondentes usando o operador de agregação de matriz $filtro .
Nesse cenário, os detalhes do produto serão filtrados com base nos critérios passados.
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"]
}
}
}
}
}])