MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

É possível achatar a consulta de resultado do MongoDB?


Você pode usar $project &$unwind &$group de agregação framework para obter o resultado mais próximo de sua necessidade.
> 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 usado duas vezes, pois a matriz de nomes está aninhada profundamente. E só funcionará se o neighbor atributo é uma matriz. No seu exemplo, um campo vizinho (Malásia) não é uma matriz