Как аннотировать итоговые документы с количеством дочерних документов? - PullRequest
0 голосов
/ 16 января 2012

У меня есть коллекция категорий, каждый документ категории содержит ссылку на своего родителя (кроме корневых категорий). Довольно просто пока.

Я хочу перечислить категории и добавить поле subcategory_count к каждому документу с количеством прямых потомков.

Как мне это сделать? Может ли Map / Reduce быть полезным?

Ответы [ 2 ]

1 голос
/ 17 января 2012

В MongoDB нет «вычисляемых столбцов», поэтому вы не можете одновременно выбирать данные и подсчитывать вложенные документы.

Это также причина, по которой большинство людей хранит длину массива вместе с массивом.

{friends_list: [1, 3, 234, 555],
 friends_count: 4}

Это помогает упростить поиск, фильтрацию, сортировку и т. Д. Но требует немного больше ручной работы.

Итак, вы в основном ограничены этими опциями:

  1. Храните все в одном документе.

  2. Сохранить количество подкатегорий в категории.

  3. Количество подкатегорий на стороне клиента.

0 голосов
/ 16 января 2012

find() чтобы получить их все, посчитайте количество подкатегорий на каждом уровне и затем обновите ().

Но, похоже, ваш доменный объект должен делать это за вас, так что в итоге вы получите один объект категории, который может содержать категории (который может также содержать категории ...), и, следовательно, один документ mongodb (вы перечисляете все они в любом случае, так что имеет смысл восстановить все это одним запросом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...