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

Wie gebe ich ein Aggregat von Sub-Arrays mit einem Filter für das oberste Array zurück?

Sie können die folgende Aggregation versuchen:

ChoreChart.aggregate([
    { "$match": { "affiliation": affiliation, "year": week.year, "weekNumber": week.number } },
    {
        $addFields: {
            chart: {
                $filter: {
                    input: "$chart",
                    cond: { $eq: [ "$$this.ordinal", 2 ] }
                }
            }
        }
    }
])

$addFields ersetzt das vorhandene Feld und $filter filtert das innere Array. Zusätzlich seit Ihrer ordinal eine Zahl ist, müssen Sie in Ihrer Abfrage auch eine Zahl und keine Zeichenfolge angeben.