MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Strategie per aggregazioni in tempo reale in MongoDB

Sembra che tu abbia aggiunto due campi age_rank , average_age . Questi sono campi effettivamente calcolati in base ai dati che hai già. Se ti ho dato il documento con le visualizzazioni di pagina e i compleanni degli utenti, dovrebbe essere davvero banale che il codice client trovi min/max, media, ecc.

Mi sembra che tu stia chiedendo a MongoDB di eseguire l'aggregazione per te lato server. Ma stai aggiungendo la limitazione che non vuoi utilizzare Mappa/Riduci?

Se ho capito correttamente la tua domanda, stai cercando qualcosa in cui puoi dire "aggiungi questo elemento a un array e fai aggiornare tutti gli elementi dipendenti" ? Non vuoi che i lettori eseguano alcuna logica, vuoi che tutto avvenga "magicamente" sul lato server.

Quindi ci sono tre diversi modi per affrontare questo problema, ma solo uno di questi è attualmente disponibile:

  1. Scrivi questa logica lato client. Non sembra la soluzione che desideri, ma funzionerà. Se hai i dati sottostanti, fare un max/min/med/avg dovrebbe essere abbastanza banale nella maggior parte delle lingue.
  2. Sfrutta le funzionalità imminenti per Aggregazione . Questi non sono programmati fino alla 1.9.x. L'aggregazione migliorata consentirà di estrarre i dati che stai cercando, tuttavia dovrai comunque scrivere le query appropriate. Il DB sottostante non contiene ancora i dati che stai cercando.
  3. Sono necessari trigger . Se vuoi davvero che il DB sia sempre coerente e contenga dati riepilogati, allora questo è ciò di cui hai bisogno. Tuttavia, la funzione di attivazione non esiste ancora.

Sfortunatamente, la tua unica opzione in questo momento è la numero 1. Fortunatamente, conosco diverse persone che stanno utilizzando l'opzione n. 1 con successo.