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:
- 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.
- 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.
- 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.