Tengo una colección de prueba con dos documentos:
> db.test.find().pretty() { "_id" : ObjectId("510114b46c1a3a0f6e5dd7aa"), "a" : 1, "b" : 2 } { "_id" : ObjectId("510114c86c1a3a0f6e5dd7ab"), "a" : 3, "b" : 1 }
Con el marco de agregación, quiero obtener solo los documentos donde a es mayor que b. $ gt solo obtiene valores en argumentos, no campos …
> db.test.aggregate([{"$match":{"$a":{"$gt":"$b"}}}]) { "result" : [ ], "ok" : 1 } /* don't work*/
Tienes algunas ideas ?
Gracias por adelantado
Atentamente
Hmm sin muchas pruebas en mi extremo, diré que puedes usar $cmp
para esto:
http://docs.mongodb.org/manual/reference/aggregation/cmp/#_S_cmp
db.test.aggregate([ {$project: { // All your other fields here cmp_value: {$cmp: ['$a', '$b']} }}, {$match: {cmp_value: {$gt: 0}}} ])
Puede haber una manera mejor, pero no tengo una instalación de MongoDB cerca de mí para probar.