sql >> Databasteknik >  >> NoSQL >> MongoDB

Är det möjligt att platta till MongoDB-resultatfrågan?

Du kan använda $project &$unwind &$group av aggregation ram för att få resultatet närmare ditt krav.

> 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 används två gånger eftersom namnmatrisen är kapslad djupt. Och det fungerar bara om neighbor attribut är en array. I ditt exempel är ett grannfält (Malaysia) inte en array



  1. Uppdaterar referens tillsammans med andra värden Mongoose

  2. Mongodb snabbkorrigering KB2731284

  3. Mungos (mongodb) batchinlägg?

  4. Förklara aggregerat ramverk