Какой самый эффективный способ увеличить недельные итоги в монго? - PullRequest
2 голосов
/ 28 сентября 2011

В сценарии, где у меня еженедельное общее количество баллов в виде массива целых чисел на пользователя, я читал в совете № 7 «50 советов и рекомендаций для разработчиков MongoDB», что для лучшей производительности в Mongo мне следует предварительно заполнить массив. Таким образом, для каждого пользователя я должен сказать, вставить 20 недель раньше времени. например,

Profile:{name:bob, totals:[{week:1,pts:0}, {week:2,pts:0}, {week:2,pts:0}, {week:2,pts:0}...etc..]}

Если это так, каков наилучший способ обновить поле точек? Я могу выполнить команду $ inc, если запись на неделю существует, но нужно ли сначала выполнить команду addToSet, чтобы убедиться, что запись на неделю существует, а затем выполнить команду $ inc? Это кажется неэффективным ... будет ли команда $ inc сочетаться с каким-либо упадком?

Пример книги предполагает, что вместо вложения итогов в профиль я могу сказать, что нужно создать годовой итоговый документ для каждого пользователя и иметь массив еженедельных баллов в этом документе, предварительно заполнив 52 недели. Затем я могу запустить пакетное задание, чтобы создать новый годовой итоговый документ для каждого пользователя, если он находится на последней неделе.

Лучше ли хранить мои итоги в отдельной коллекции, а не вставлять их в профиль с моим вариантом использования?

...