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

Ist es möglich, die MongoDB-Ergebnisabfrage zu vereinfachen?

Sie können $project verwenden &$unwind &$group von Aggregation Rahmen, um das Ergebnis näher an Ihre Anforderung heranzubringen.

> db.countries.aggregate({$project:{a:'$data.country.neighbor.name'}},
                         {$unwind:'$a'},
                         {$unwind:'$a'},
                         {$group:{_id:'a',res:{$addToSet:'$a'}}})
  {
    "result" : [
        {
            "_id" : "a",
            "res" : [
                "Colombia",
                "Malaysia",
                "Switzerland",
                "Costa Rica",
                "Austria"
            ]
        }
    ],
    "ok" : 1
}

$unwind zweimal verwendet, da das Namensarray tief verschachtelt ist. Und es funktioniert nur, wenn der neighbor Attribut ist ein Array. In Ihrem Beispiel ist ein Nachbarfeld (Malaysia) kein Array