Могу ли я реструктурировать данные с помощью структуры агрегации mongodb из
array: [{date: "27-08-12", nestedArray: [0, 1, 2]}, {date: "18-08-12", nestedArray: [0, 2]}]
к
array: [{"27-08-12": [0, 1, 2]}, {"18-08-12": [0, 2]}]
?
Слишком много вариаций на эту тему, чтобы угадать. Пожалуйста, предоставьте 2 входных документа и 1 (или более, если необходимо) выходной документ, а также то, что вы пытались там получить. Кроме того: Превращение rvals, таких как даты, в lvals (ключи) часто приводит к путанице и проблемам позже.
Как насчет этого?
db.collection.aggregate([
{
"$unwind": "$array"
},
{
"$group": {
"_id": null,
"data": {
"$push": {
k: "$array.date",
v: "$array.nestedArray"
}
}
}
},
{
"$project": {
"array": {
"$arrayToObject": "$data"
}
}
}
])
Осторожный; это работает надежно только на одном документе. Измените на {$group: (_id: "$_id"}}
, чтобы он работал более чем с одним документом, если какие-либо даты совпадают. Но ОП не очень четко прояснил реальный набор данных.
Я знаю, что решение ограничено, но примеры данных не дают большего.
Зависит от того, что вы хотите с ним делать. Вы хотите сделать запрос, вы хотите обновить базу данных или? Предоставьте больше информации и того, что у вас есть, чего вы хотите достичь, где результат должен потребляться/храниться и на каких условиях.