Det ser ud til, at du har tilføjet to felter age_rank
, average_age
. Disse er effektivt beregnede felter baseret på de data, du allerede har. Hvis jeg gav dig dokumentet med sidevisninger og brugerfødselsdage, burde det være rigtig trivielt for klientkoden at finde min/max, gennemsnit osv.
Det forekommer mig, at du beder MongoDB om at udføre aggregeringen for din serverside. Men du tilføjer den begrænsning, at du ikke vil bruge Kort/Reducer?
Hvis jeg forstår dit spørgsmål korrekt, leder du efter noget, hvor du kan sige "tilføj dette element til et array og få alle afhængige elementer til at opdatere sig selv" ? Du ønsker ikke, at læserne skal udføre nogen logik, du vil have, at alt skal ske "magisk" på serversiden.
Så der er tre forskellige måder at tackle dette på, men kun én af dem er i øjeblikket tilgængelig:
- Skriv denne logiske klientside. Det lyder ikke som den løsning, du ønsker, men det vil virke. Hvis du har de underliggende data, burde det være ret trivielt at lave en max/min/med/avg på de fleste sprog.
- Udnyt de kommende funktioner til Aggregation . Disse er ikke planlagt før 1.9.x. Forbedret aggregering gør det muligt at udtrække de data, du leder efter, men du skal stadig skrive de relevante forespørgsler. Den underliggende DB indeholder stadig ikke de data, du leder efter.
- Du skal bruge triggere . Hvis du virkelig ønsker, at DB altid skal være konsistent og indeholde opsummerede data, så er det det, du har brug for. Udløserfunktionen findes dog ikke endnu.
Desværre er din eneste mulighed lige nu #1. Heldigvis kender jeg til flere personer, der bruger mulighed #1 med succes.