MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Elem Match gibt alle Daten zurück, während ich nur die ausgewählten Daten benötige

$elemmatch(query) gibt alle Zeilen in einem Array zurück, wenn es mindestens eine Zeile gibt, die den Abfragekriterien entspricht.

$elemMatch(projection) gibt nur die erste Zeile aller übereinstimmenden Zeilen zurück, wenn sie als Projektion verwendet wird.

Sie können ganz einfach alle übereinstimmenden Zeilen abrufen, indem Sie den Array-Aggregationsoperator $filter .

In diesem Szenario werden Produktdetails basierend auf den übergebenen Kriterien gefiltert.

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