En SQL que podía hacer algo así como¿Es posible devolver un campo calculado de una consulta MongoDB?
SELECT myNum, (myNum+1) as `increment` FROM myTable
efectivamente haciendo matemáticas arbitrarias y otras funciones y devolver los como un campo en el resultado. ¿Se puede hacer lo mismo con MongoDB?
db.test.find({}, {_id:1, myNum:1, increment:function() { return this.myNum + 1;}});
Eso no devuelve un campo de "incremento" como era de esperar.
Todas las demás preguntas relacionadas que pude encontrar sobre este tema tratan con consultas GROUPed, que esta no es; Solo estoy agregando un campo "virtual" al documento cuando se extrae (¿se calcula el lado del cliente?).
Como alternativa, este problema parece ser un "mapa" sin un "reducir"; cada fila tiene su propio campo calculado. ¿Hay alguna forma de devolver el resultado de una función de mapa como resultado/cursor?
bien que parece prometedor. Aunque la documentación enumera la versión 2.1 como la primera versión con esa característica, no 2.2. Lamentablemente, no tiene una función '$ count'; para mi propósito en el mundo real, tengo que contar un conjunto de subdocumentos. Eso y los repositorios de Fedora 16 solo tienen 2.0 actualmente, por lo que podría tener que hacer este lado del cliente – MidnightLightning
@MidnightLightning: tiene razón en que el marco de agregación apareció por primera vez en las versiones de desarrollo 2.1.x. 2.2.0 será la versión estable/producción con esta característica. 2.2.0rc0 ha sido [disponible en mongodb.org/downloads](http://www.mongodb.org/downloads) desde mediados de julio. No puede lograr su ejemplo de un campo calculado a partir de un único documento con un mapa/reducir porque no se llamará a la función reduce() a menos que el mapa emita más de un documento para una clave determinada. – Stennie
@MidnightLightning: vale la pena señalar que la [versión de producción de MongoDB 2.2.0] (http://docs.mongodb.org/manual/release-notes/2.2/) ya está disponible desde finales de agosto de 2012. – Stennie