Конечно, это может привести к более позднему выпуску /

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

Rainbird в Твиттере: Суммы в реальном времени, иерархически увеличивающие счетчики ключей. Cassandra.Yahoo S4 а такжеисточник: Пока точно не знаю, как это работает, но похоже, что это сокращение карты в реальном времени. Таким образом, в основном, для каждой добавленной записи вы передаете ее в маппер, она преобразует ее в хеш и отправляет ее для интеграции в документ отчета.http://www.slideshare.net/dacort/mongodb-realtime-data-collection-and-stats-generationКолибри

Основной подход для выполнения сумм состоит в том, чтобы атомарно увеличивать ключи документа для каждой новой поступающей записи, чтобы кэшировать общие запросы:

Stats.collection.update({"keys" => ["a", "b", "c"]}, {"$inc" => {"counter_1" => 1, "counter_2" => 1"}, "upsert" => true);

Это не работает для агрегатов, кроме сумм, хотя. Мой вопрос, может ли что-то подобное быть сделано длясредние, мин, а такжеМаксимум в mongodb?

Скажем, у вас есть такой документ:

{
  :date => "04/27/2011",
  :page_views => 1000,
  :user_birthdays => ["12/10/1980", "6/22/1971", ...] # 1000 total
}

Не могли бы вы сделать какую-нибудь атомарную или оптимизированную / в реальном времени операцию, которая сгруппировала бы дни рождения примерно так?

{
  :date => "04/27/2011",
  :page_views => 1000,
  :user_birthdays => ["12/10/1980", "6/22/1971", ...], # 1000 total
  :average_age => 27.8,
  :age_rank => {
    "0 to 20" => 180,
    "20 to 30" => 720,
    "30 to 40" => 100,
    "40 to 50" => 0
  }
}

... так же, как вы можете сделатьDoc.collection.update({x => 1}, {"$push" => {"user_birthdays" => "12/10/1980"}}) Чтобы добавить что-то в массив и не загружать документ, можете ли вы сделать что-то подобное для усреднения / агрегирования массива? Есть ли что-то в этом роде, что вы используете для агрегирования в реальном времени?

MapReduce используется для выполнения заданий пакетной обработки. Я ищу шаблоны для чего-то вроде map-Reduce в реальном времени для:

Сред: каждый раз, когда вы помещаете новый элемент в массив в mongodb, как лучше всего усреднить эти значения в реальном времени?группирование: если вы группируете возраст по 10-летним скобкам и у вас есть массив возрастов, как вы могли бы оптимально обновить счетчик для каждой группы при обновлении документа с новым возрастом? скажем, массив возрастов будет постоянно выдвигаться / вытягиваться.Мин Макс: Каковы некоторые способы вычисления и сохранения минимального / максимального значения этого массива возрастов в этом документе?

Ответы на вопрос(1)

Ваш ответ на вопрос