Я хочу выровнять свою модель данных для экспорта в формате CSV.
Я думаю, что я могу получить с агрегацией, но я не знаю, как,
модель состоит из нескольких массивов объектов, и я хочу, чтобы проект
только определенные поля объектов вместе с другими полями основного объекта.
У меня есть модель, которая выглядит следующим образом
{
"_id" : ObjectId,
"email" : string,
"dates" : {
"registered" : ISODate,
"last_activity" : ISODate
},
"autos" : [
{
"_id" : ObjectId,
"make" : string,
"model" : string,
"color" : string
}
],
"boats": [
{
"_id" : ObjectId,
"manu" : string,
"model" : string,
"motor" : string
}
]
}
Это все, что я получил с помощью конвейера агрегации.
db.users.aggregate( [
{ $unwind: "$autos" },
{
$project: {
_id: 1,
email: 1,
'dates.registered': 1,
'autos.make': 1,
'autos.model': 1
}
}
] )
Мое возвращение выглядит так
{
"_id" : ObjectId(),
"dates" : {
"registered" : ISODate()
},
"email" : "...",
"autos" : {
"make" : "...",
"model" : "..."
}
}
Но я хочу, чтобы мое возвращение выглядело так:
{
"_id" : ObjectId(),
"registered" : ISODate(),
"email" : "..."
"auto_make" : "...",
"auto_model" : "..."
}
и как продолжение - можно ли раскрутить второй массив "лодок"
в том же запросе ????
Так что мои результаты будут выглядеть так
{
"_id" : ObjectId(),
"registered" : ISODate(),
"email" : "...",
"auto_model" : "...",
"auto_color" : "...",
"boat_model" : "...",
"boat_motor" : "...",
}