Я пытаюсь разработать общий механизм отчетности для системы MongoDB, который будет собирать информацию из набора документов. Я не буду знать структуру документов до выполнения запроса.
например. Один комплект документов может выглядеть так:
{"drink": "Tea","accompaniments": ["Biscuits","Crisps"]}
{"drink": "Tea","accompaniments": ["Biscuits"]}
{"drink": "Coffee","accompaniments": ["Biscuits","Crisps"]}
{"drink": "Coffee","accompaniments": ["Nuts","Biscuits"]}
{"drink": "Beer","accompaniments": ["Nuts","Crisps"]}
{"drink": "Beer","accompaniments": ["Nuts"]}
{"drink": "Beer","accompaniments": ["Crisps"]}
Здесь мне нужны результаты, такие как:
{drink:{Tea:2,Coffee:2,Beer:3},accompaniments:{biscuits:4,Crisps:4,Nuts:3}}
Другой набор документов может выглядеть следующим образом:
{"favcolor": "Red","shapes": ["Square","Circle"]}
{"favcolor": "Red","shapes": ["Square"]}
{"favcolor": "Green","shapes": ["Circle"]}
Может быть любое количество различных форматов документов.
Итак, я не могу «жестко закодировать» функции сокращения карты с помощью именованных ключей. Кроме того, обратите внимание, что мне нужно получать информацию из вложенных массивов и / или документов - я контролирую, как создаются документы, поэтому, если использовать один пример, я мог бы сделать массив сопровождения подходящим набором вложенных документов, если это необходимо (в этом примере они построены из флажков с множественным выбором).
Какая была бы наиболее эффективная функция уменьшения карты, чтобы получить всю статистику из каждого набора документов? Я очень надеюсь, что будет «одна» карта-редукция, которая сможет собирать данные из каждого набора. Большое спасибо.