Я нахожу структуру агрегации mongodb чрезвычайно мощной - кажется, что это хорошая возможность сгладить объект. Моя схема использует массив вспомогательных объектов в массиве, называемом материалами. Количество материалов является переменной, но конкретное поле (категория) будет уникальным для объектов в массиве. Я хотел бы использовать структуру агрегации для сглаживания структуры и динамического переименования полей на основе значения поля категории. Я не мог найти простой способ выполнить это, используя $ project вместе с $ cond. Есть ли способ?Механизм агрегации MongoDB - переименование динамического поля
Причиной массива материальных объектов состоит в обеспечении возможности простого поиска:
например, {'materials.name': 'XYZ'} отбрасывает любой документ, в котором найден XYZ.
E.g. до и после того, как документ
{
"_id" : ObjectId("123456"),
"materials" : [
{
"name" : "XYZ",
"type" : "Red",
...
"category" : "A"
},
{
"name" : "ZYX",
"type" : "Blue",
...
"category" : "B"
}]
}
в
{
"material_A_name" : "XYZ",
"material_A_type" : "Red",
...
"material_B_name" : "ZYX",
"material_B_type" : "Blue",
...
}
Ваш документ 'after' недействителен JSON – JohnnyHK
Спасибо, обновлено - это была ошибка при создании макета в моем редакторе – user2234151
Хорошо, я вижу, что вы пытаетесь сделать сейчас. Поддержка динамически сгенерированных ключей в структуре agg не поддерживается, поэтому я не вижу, как вы могли бы это сделать. Возможно, вам придется просто отправить результат обработки кода, чтобы сделать это. – JohnnyHK