В рамках моего конвейера агрегации у меня следующий сценарий. Это результат группировки ранее развернутых полей из каждого документа (поэтому в этом случае есть два документа с одинаковым _id, но с другим значением для UniqueFieldName)
TopLevelField: [
{
UniqueFieldName: "Values go here!"
},
{
UniqueFieldName: "More values go here too!"
}
]
Все, что я хочу сделать, это объединить вложенные поля объекта в одно поле и pu sh все значения в это поле в виде массива, например, так.
TopLevelField: {
UniqueFieldName: [
"Values go here!",
"More values go here too!",
],
}
Идея состоит в том, что у меня может быть несколько полей с несколькими значениями в каждом поле, сгруппированных вместе для упрощения итерации.
TopLevelField: {
UniqueFieldName: [
"Values go here!",
"More values go here too!",
],
SecondFieldName: [
"This is text",
],
AnotherOne: [
"TEXT",
"Here too!",
"More values",
],
}
Проблема, с которой я сталкиваюсь, состоит в том, что при попытке использовать точечную нотацию на этапе $ group выдается ошибка. Кажется, что mon go не любит группировать с вложенными объектами, как это?
Простое решение состоит в том, чтобы просто изменить TopLevelField на некоторую конкатенацию вложенных полей, как это,
TopLevelField-UniqueFieldName: [
"Values go here!",
"More values go here too!",
],
TopLevelField-SecondFieldName: [
"This is text",
],
TopLevelField-AnotherOne: [
"TEXT",
"Here too!",
"More values",
],
Но это неоптимально для моего варианта использования. Есть ли решение для этого или мне нужно переосмыслить весь конвейер?