2014-02-06 1 views
1

У меня есть mongo db с около 200K документами. Схема документов - это что-то вродеMongodb - Множественные счета против производительности структуры агрегации

doc : { 
    'class' : String, 
    'data' : {} 
} 

Класс может быть a, b или c.

Мне нужно знать, сколько документов у меня есть в классе.

Какой запрос имеет лучшую производительность? Сделайте запрос с использованием структуры агрегации или сделайте 3 запроса, каждый из которых подсчитывает документы для разных классов?

Спасибо!

+1

Лучший способ - эксперимент. '$ group' не будет использовать индекс, если он есть –

+1

Согласен с orid. Даже если бы был хороший теоретический ответ, вам нужно было бы предоставить полный пример, шаблоны запросов и т. Д. Вопрос, как он есть, похож на «как построить дом. Должен иметь 2 окна. Использовать кирпич?» – mnemosyn

ответ

0

Я считаю, что вы должны использовать aggregation framework, в течение нескольких простых причин:

  • Это быстро и может использовать индексы (особенно, если вы не использовать $ проекта до группировки).
  • Это единый вызов манго. Простой, чистый, вы можете легко контролировать его.
  • Если вы добавите больше классов в будущем, вам не придется менять цепочку агрегации на всех. В отличие от этого, если вы решите делать разные подсчеты, вам нужно будет добавить одно или несколько операторов, и вам также придется изменить код приложения для обработки результатов.