MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Elem match renvoie toutes les données alors que je n'ai besoin que des données sélectionnées

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