stratégias para agregações em tempo real no MongoDB

Ao explorar maneiras de fazer análises em tempo real com o MongoDB, parece haver uma maneira bastante padrão de fazer somas, mas nada em termos de agregação mais complexa. Algumas coisas que ajudaram ...

Rainbird do Twitter: Somas em tempo real, incrementando contadores nas chaves hierarquicamente. Cassandra S4 do Yahoo efont: Ainda não sei exatamente como isso funciona, mas parece que é uma redução de mapa em tempo real. Então, basicamente, para cada registro adicionado, você o passa para um mapeador, ele o converte em hash e o envia para ser integrado ao documento do relatórihttp: //www.slideshare.net/dacort/mongodb-realtime-data-collection-and-stats-generatioBeija Flo

abordagem básica para fazer somas é incrementar atomicamente as chaves do documento para cada novo registro que chega, armazenar em cache as consultas comun

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

Isto não funciona para agregados que não sejam somas. Minha pergunta é: algo assim pode ser feito para médias, min e max no mongodb?

Diga que você tem um documento como este:

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

Você poderia fazer alguma operação atômica ou otimizada / em tempo real que agrupasse os aniversários em algo assim?

{
  :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
  }
}

... assim como você pode fazerDoc.collection.update({x => 1}, {"$push" => {"user_birthdays" => "12/10/1980"}}) para adicionar algo a uma matriz e não precisar carregar o documento, você pode fazer algo assim para calcular a média / agregação da matriz? Existe algo nesse sentido que você usa para agregação em tempo real?

@MapReduce é usado para fazer isso em trabalhos de processamento em lote. Estou procurando padrões para algo como redução de mapa em tempo real para:

Médias: toda vez que você envia um novo item para uma matriz no mongodb, qual é a melhor maneira de calcular a média desses valores em tempo reaAgrupament: se você agrupa a idade dos parênteses de 10 anos e tem uma matriz de idades, como atualizar de forma ideal a contagem de cada grupo à medida que atualiza o documento com a nova era? diga que a matriz de idades será constantemente pressionada / puxada.Mínimo máxim: quais são algumas maneiras de calcular e armazenar o mínimo / máximo dessa matriz de idades nesse document

questionAnswers(2)

yourAnswerToTheQuestion