Я пытаюсь преобразовать объект документов mongoDB в массив с теми же данными. У меня есть документ, структурированный следующим образом:

{
    _id:"43434",
    fistname: 'Bob',
    lastname: 'Toto',
    address: { city: "cityName", postalCode: "000000", streetName: "streetname" },
}

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

{
    _id:"43434",
    fistname: 'Bob',
    lastname: 'Toto',
    address: [{ city: "cityName", postalCode: "000000", streetName: "streetname" }],
}

Как мне этого достичь? Могу ли я использовать $project (агрегирование) монго?

1
Dave 23 Окт 2019 в 17:22
Если вы хотите записать результаты обратно в коллекцию, агрегат вам не поможет, если только вы не используете версию <4.2. в предыдущих версиях есть $out, но я бы не предпочел, так как это разрушительно, потому что он перезапишет коллекцию новыми данными. Вы можете увидеть адрес, преобразованный в массив со значением как null (это происходит, если у вас нет адреса в первую очередь) !! Пожалуйста, проверьте приведенную выше ссылку, она должна вам помочь, или, если вы используете версию 4.2, используйте $merge в агрегации!
 – 
whoami - fakeFaceTrueSoul
23 Окт 2019 в 18:07

1 ответ

Попробуйте этот запрос

db.tester.aggregate(
   [
       {$match:{"_id":ObjectId("5db06342f079fa02a63adaf8")}},
      {
         $project: {
            fistname: 1,
            lastname:1,
            address: [{ city:'$address.city','postalCode':'$address.postalCode',streetName:'$address.streetName'}]
         }
      }
   ]
)
1
Mahesh Bhatnagar 23 Окт 2019 в 17:38
1
Пожалуйста, попробуйте этот запрос
 – 
Mahesh Bhatnagar
23 Окт 2019 в 17:39