Извлечение данных из документов Mon go - PullRequest
0 голосов
/ 12 марта 2020

Я только начал изучать пн go. Я следую официальной документации, чтобы узнать о том, как запрашивать документы Mon go. Теперь у меня есть документ в следующей структуре:

{
   "name": "ABC",
   "address":[
        {
          "type": "primary",
          "city": "XYZ",
          "state": "PQR"
        },
        {
          "type": "secondary",
          "city": "XYZ1",
          "state": "PQR1"
        }
     ]
}

Что мне нужно сделать, это извлечь данные из этого документа в CSV-файл в структуре ниже:

ABC    primary     XYZ    PQR
ABC    secondary   XYZ1   PQR1

Но все, что я мог сделать, это извлечь данные только в структуре ниже (используя MongoChef):

ABC    primary     XYZ    PQR    secondary   XYZ1   PQR1

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

{
       "name": "ABC",
       "address":[
            {
              "type": "primary",
              "city": "XYZ",
              "state": "PQR",
              "reachingAddress":[
                 {
                  "modeOfTravel": "AIR",
                  "description": "blah blah"
                 },
                 {
                  "modeOfTravel": "TRAIN",
                  "description": "blah blah blah"
                 }
               ]
            },
            {
              "type": "secondary",
              "city": "XYZ1",
              "state": "PQR1",
              "reachingAddress":[
                 {
                  "modeOfTravel": "AIR",
                  "description": "blah1 blah1"
                 },
                 {
                  "modeOfTravel": "TRAIN",
                  "description": "blah1 blah1 blah1"
                 }
               ]
            }
         ]
    }

, и мне нужны данные в следующей структуре:

ABC    primary     XYZ    PQR   AIR    blah blah
ABC    primary     XYZ    PQR   TRAIN  blah blah blah
ABC    secondary   XYZ1   PQR1  AIR    blah1 blah1
ABC    secondary   XYZ1   PQR1  TRAIN  blah1 blah1 blah1 

Любое предложение будет оценено .

1 Ответ

0 голосов
/ 12 марта 2020

Я не использовал mongochef, но традиционно в оболочке mon go, я бы использовал комбинацию конвейерных операций агрегатора $ unwind $ project и $ out, чтобы создать новую коллекцию документов с именем типа город-государство в режиме travel и description.

Для второго упомянутого вами типа документа используйте $ unwind $ unwind $ project $ out

Ниже ссылки, чтобы помочь вам построить конвейер агрегатора ...

https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/#pipe ._ S_unwind

https://docs.mongodb.com/manual/reference/operator/aggregation/project/#pipe ._ S_project

https://docs.mongodb.com/manual/reference/operator/aggregation/out/#pipe ._ S_out

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