MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Elem match restituisce tutti i dati mentre ho bisogno solo dei dati selezionati

$elemmatch(query) restituisce tutte le righe in una matrice quando è presente almeno una riga che corrisponde ai criteri della query.

$elemMatch(projection) restituisce solo la prima riga di tutte le righe corrispondenti quando viene utilizzata come proiezione.

Puoi facilmente ottenere tutte le righe corrispondenti utilizzando l'operatore di aggregazione di array $filtro .

In questo scenario, i dettagli del prodotto verranno filtrati in base ai criteri passati.

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