Структура агрегации MongoDB для подсчета отдельных элементов массива

У меня есть такие документы, как:

{ tags: { first_cat: ["a", "b", "c"], second_cat : ["1","2","3"]}}
{ tags: { first_cat: ["d", "b", "a"], second_cat : ["1"]}}

Мне нужно что-то вроде этого:

{ first_cat: [{"a" : 2}, {"b" : 2}, {"c" : 1}, {"d" : 1}], second_cat: [{"1" : 2, "2": 1, "3":1}] }

С m/r это довольно легко сделать (но медленно), возможно ли получить аналогичный результат с фреймворком агрегации?


person user1365836    schedule 01.08.2013    source источник
comment
Вероятно; попробуйте и покажите, что вы сделали, поскольку не похоже, что вы провели много исследований по этому вопросу. Вы захотите взглянуть на операторы конвейера $unwind и $group.   -  person JohnnyHK    schedule 01.08.2013


Ответы (1)


Вы не можете сделать это с помощью Aggregation Framework, поскольку нет способа преобразовать произвольные значения "a" в ключ { "a": 2 }. Вам нужно будет переделать схему.

person Derick    schedule 01.08.2013