Агрегация em MongoDB - PullRequest
       8

Агрегация em MongoDB

0 голосов
/ 10 ноября 2018

У меня есть две городские и государственные коллекции следующим образом:

город

{
    "_id" : ObjectId("5be385fdb9ee9a25f7e418a9"),
    "ID" : "1",
    "Nome" : "Afonso Cláudio",
    "Estado" : "8"
},{
    "_id" : ObjectId("5be385fdb9ee9a25f7e418aa"),
    "ID" : "2",
    "Nome" : "Água Doce do Norte",
    "Estado" : "8"
}

состояние

{
    "_id" : ObjectId("5be385feb9ee9a25f7e42e65"),
    "ID" : "1",
    "Sigla" : "AC",
    "Nome" : "Acre"
}

Я хочу создать новую коллекцию из этих двух. Для этого я написал следующий запрос:

db.cidades.aggregate ([

{ $lookup: { from:"estados",localField: "Estado",foreignField: "ID",as:"estado"}}, 
{ $sort :  { Estado:1,Nome:1 }},
{ $project:{ "ID":0,"_id":0,"Estado":0,"estado.ID":0,"estado._id":0}},
{ $addFields: { "cnpj": null,"legislacao": [] }},
{ $out : "municipios" }    
]).pretty()

Что дало мне следующий результат:

{
    "_id" : ObjectId("5be5c6407608e1137ab33fe4"),
    "Nome" : "Acrelândia",
    "estado" : [ 
        {
            "Sigla" : "AC",
            "Nome" : "Acre"
        }
    ],
    "cnpj" : null,
    "legislacao" : []
}

Что бы мне действительно хотелось, так это то, что конечный результат выглядит следующим образом:

{
    "_id" : ObjectId("5be5c6407608e1137ab33fe4"),
    "Nome" : "Acrelândia",
    "Sigla" : "AC",
    "Nome" : "Acre"
    "cnpj" : null,
    "legislacao" : []
}

или

{
    "_id" : ObjectId("5be5c6407608e1137ab33fe4"),
    "Nome" : "Acrelândia",
    "estado" :{
            "Sigla" : "AC",
            "Nome" : "Acre"
        }
    ,
    "cnpj" : null,
    "legislacao" : []
}

Какие изменения я должен внести в запрос, чтобы получить приведенный выше результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...