«AVG» и «сумма» функциональность в MongoDB, любые советы?

Я относительную новичку в MongoDB, но из того, что я прочитал, есть различные методы для поиска средних средних и сумм значений в базе данных Mongodb, с различными преимуществами и недостатками для каждого.

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

Документы в сборе запрашивают напоминают эту структуру (с большим количеством других полей):

{
    "_id": ObjectId('4e650107580fd649e5000005'),
    "date_added": ISODate("2011-09-05T00:00:00Z"),
    "value": 1500
}

Докальтические вещи, такие как суммы, в моем приложении, не всегда возможно, потому что выбор значений, которые должны быть изменены ( На основании диапазонов даты - например, между датой начала и датой окончания, что является средней). Это аналогичная проблема с предварительным средним значением.

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

На данный момент я запрашиваю коллекцию таким образом: (Примечание: это использует Pymongo )

response = request.db['somecollection'].find(
    {
        'date_added': {
            '$gte': date_start,
            '$lte': date_end
        }
    },
    {
        'value':1
    }
).limit(500)

, затем выполнение расчета в Python с использованием для цикла ответ. Предел 500 результатов является произвольным, чтобы удержать его слишком медленно. Я только извлекаю ценность, и ни одна из других областей.

Это наиболее эффективный метод выполнения этой исчисления, или есть ли другие методы для достижения того, что мне нужно?

Предостережения:

  • Я не могу использовать функцию , потому что я буду Вероятно, используйте Sharding в будущем
  • , я не могу использовать MapReduce, потому что это функция, которая будет использоваться на лету пользователями
  • , я не могу предварительно доказывать много моих сумм / средних, потому что выбор Значения на сумму / среднее значение почти всегда отличаются
  • Я оглянулся вокруг StackoverFlow и Web, чтобы попытаться найти рекомендацию о том, как сделать такую ​​вещь, и это довольно открыто

редактирование:

я должен Укажите, что количество документов, возвращенных из запроса, которое я опубликовал выше, может быть чем-либо от 1 документа до сотен, но, вероятно, будет иметь максимальное количество возвращенных документов около 150 (в среднем около 60 или 70)

-121-12 --1462518- Как перезагрузить / обновить / Rinit Dynatriee? Когда я делаю следующие $ («дерево»). Dynatreee («опция», «initajax», {u u RL: «http://google.com»}); Я хочу, чтобы Dynatree забыть о текущих данных дерева и перезагружать с новыми данными из указанного URL ...

, когда я делаю следующее

$('#tree').dynatree("option","initAjax",{url:"http://google.com"});

Я хочу, чтобы Dynatriee забыть о текущих данных дерева и перезагружаться с новыми данными из указанного URL вместо. Но я нахожу, что это не делает этого по умолчанию.

Спасибо.

14
задан Mr Coder 6 September 2011 в 10:00
поделиться