sql >> Base de Datos >  >> NoSQL >> MongoDB

Estrategias para agregaciones en tiempo real en MongoDB

Parece que ha agregado dos campos age_rank , average_age . Estos son campos efectivamente calculados basados ​​en los datos que ya tiene. Si le doy el documento con visitas a la página y cumpleaños de los usuarios, debería ser realmente trivial para el código del cliente encontrar el mínimo/máximo, promedio, etc.

Me parece que le está pidiendo a MongoDB que realice la agregación en su servidor. ¿Pero está agregando la limitación de que no desea usar Map/Reduce?

Si entiendo su pregunta correctamente, está buscando algo en lo que pueda decir "agregue este elemento a una matriz y haga que todos los elementos dependientes se actualicen solos" ? No desea que los lectores realicen ninguna lógica, desea que todo suceda "mágicamente" en el lado del servidor.

Entonces, hay tres formas diferentes de abordar esto, pero solo una de ellas está disponible actualmente:

  1. Escriba esta lógica del lado del cliente. No suena como la solución que desea, pero funcionará. Si tiene los datos subyacentes, hacer un máximo/mínimo/medio/promedio debería ser bastante trivial en la mayoría de los idiomas.
  2. Aproveche las próximas funciones para Agregación . Estos no están programados hasta 1.9.x. La agregación mejorada permitirá extraer los datos que está buscando, sin embargo, aún tendrá que escribir las consultas adecuadas. La base de datos subyacente aún no contiene los datos que está buscando.
  3. Necesita disparadores . Si realmente desea que la base de datos sea siempre coherente y contenga datos resumidos, entonces esto es lo que necesita. Sin embargo, la función de activadores aún no existe.

Desafortunadamente, su única opción en este momento es la #1. Afortunadamente, conozco a varias personas que están usando la opción n.° 1 con éxito.