Реструктуризация в агрегации mongodb

Могу ли я реструктурировать данные с помощью структуры агрегации 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]}]

?

Зависит от того, что вы хотите с ним делать. Вы хотите сделать запрос, вы хотите обновить базу данных или? Предоставьте больше информации и того, что у вас есть, чего вы хотите достичь, где результат должен потребляться/храниться и на каких условиях.

zhulien 20.12.2020 16:55

Слишком много вариаций на эту тему, чтобы угадать. Пожалуйста, предоставьте 2 входных документа и 1 (или более, если необходимо) выходной документ, а также то, что вы пытались там получить. Кроме того: Превращение rvals, таких как даты, в lvals (ключи) часто приводит к путанице и проблемам позже.

Buzz Moschetti 20.12.2020 17:32
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
2
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как насчет этого?

db.collection.aggregate([
  {
    "$unwind": "$array"
  },
  {
    "$group": {
      "_id": null,
      "data": {
        "$push": {
          k: "$array.date",
          v: "$array.nestedArray"
        }
      }
    }
  },
  {
    "$project": {
      "array": {
        "$arrayToObject": "$data"
      }
    }
  }
])

Детская площадка Монго

Осторожный; это работает надежно только на одном документе. Измените на {$group: (_id: "$_id"}}, чтобы он работал более чем с одним документом, если какие-либо даты совпадают. Но ОП не очень четко прояснил реальный набор данных.

Buzz Moschetti 20.12.2020 21:49

Я знаю, что решение ограничено, но примеры данных не дают большего.

Wernfried Domscheit 20.12.2020 23:03

Другие вопросы по теме