Así soy nuevo con mongodb y mapreduce en general y encontré este "capricho" (o al menos en mi mente una peculiaridad)MongoDB MapReduce - Emitir una clave/valor uno duerma llamar reducir
Decir que tengo objetos en mi colección, así:
{ 'clave': 5, 'valor': 5}
{ 'clave': 5, 'valor': 4}
'llave' { : 5, 'valor': 1}
{ 'clave': 4, 'valor': 6}
{ 'clave': 4, 'valor': 4}
{ 'clave': 3, 'valor': 0}
Mi mapa función simplemente emite la clave y el valor
Mi reducir función simplemente suma los valores y antes de devolverlos añade 1 (Hice esto para comprobar para ver si la función de reducir es e Ven llama)
Mis resultados siguen:
{ '_id': 3, 'valor': 0}
{ '_id': 4, 'valor': 11.0}
{ '_id': 5, 'valor': 11.0}
Como se puede ver, por las teclas 4 5 & me da la respuesta esperada de 11, pero para el th e la clave 3 (con solo una entrada en la colección con esa clave) ¡Obtengo el 0 inesperado!
¿Es este comportamiento natural de mapreduce en general? Para MongoDB? Para pymongo (que estoy usando)?
Para que quede claro, esta es la forma en que se diseñó la reducción de mapas. Si desea modificar documentos con claves únicas (como la clave 3), considere utilizar la función de finalización: http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-FinalizeFunction – Jenna
¿cuál es la solución si queremos incluir clave con solo documento en resultados ??? –
@RaviKhakhkhar los documentos únicos todavía se incluyen en los resultados, simplemente las funciones de reducción nunca se llaman en ellos – Cilvic