MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Elem match está retornando todos os dados, enquanto eu preciso apenas dos dados selecionados


$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"]
                }
            }
        }
    }
}])