Mon go получить данные из массива и изменить их на строку, используя агрегацию - PullRequest
0 голосов
/ 13 января 2020
_id:ObjectId("sdmiosdlgnjaksc") 

mixed: Array
 0:Array
    0:Array
       0:ObjectId("5dsoiucjnaov")

требуемый вывод

_id:ObjectId("sdmiosdlgnjaksc") 

mixed: ObjectId("5dsoiucjnaov")

попытался размотать, но это уменьшает только один слой.

1 Ответ

0 голосов
/ 13 января 2020

Вам нужно использовать $unwind дважды:

 {$unwind:"$mixed"},
 {$unwind:"$mixed"}

Или использовать 2x $arrayElemAt раз или $reduce + $arrayElemAt:

db.collection.aggregate([
  {
    $project: {
      mixed1: {
        $arrayElemAt: [
          {
            $arrayElemAt: [
              "$mixed",
              0
            ]
          },
          0
        ]
      },
      mixed2: {
        $reduce: {
          input: "$mixed",
          initialValue: "",
          in: {
            $arrayElemAt: [
              "$$this",
              0
            ]
          }
        }
      }
    }
  }
])

MongoPlayground

...