Cuando tengo dos documentos MongoDB como este ...¿Es posible emitir un MongoDB-Query?
db.test.insert({"value" : "10123"});
db.test.insert({"value" : "160"});
El resultado de una consulta como:
db.test.find({"value" :{$gt : "12"} });
es ..
{ "_id" : ObjectId("4c6d1b92304326161b678b89"), "value" : "160" }
Es obvio, que una cadena se realiza una comparación, de modo que mi primer valor no se devuelve. ¿Hay alguna forma de enviar contenido dentro de la consulta?
Algo así como:
db.test.find({ (int) "value" :{$gt : 12} });
sería grande. Una consulta como
db.test.find({"value" :{$gt : 12} }); // without the quotes around "12"
no devuelve nada.
¿Hay una razón por la que va a almacenar números enteros como cadenas? No sería mejor hacer db.test.insert ({"value": 10123}); –
Eso es cierto, por supuesto .. En mi solicitud, recojo valores en formularios y se los paso a Mongo. Los valores POST y GET se escriben por string de forma predeterminada. Sospeché que el conductor se haría cargo de la conversión de tipo. Desafortunadamente ese no es el caso. Así que tienes razón, convierto los datos antes de insertarlos. Además, @niels hizo un buen punto ... usar una expresión javascript en realidad resuelve el problema. – rgroli