query - project mongodb
Consulta de mongoDB "DONDE_id> umbral" (1)
¿Cómo puedo tener una consulta de Mongo similar al SQL "... DONDE _id> umbral"
Intenté lo siguiente, pero no me da ningún resultado.
db.things.find(_id: {$gt: someid} });
¿Es porque el campo _id es un poco especial, ya que tiene el formato?
_id : {"$oid" : "someid"}
Comparar como con como
La clave _id
en mongo no es (de forma predeterminada) una cadena, es un ID de objeto mongo.
Debe comparar con el mismo tipo para obtener un resultado significativo:
var ObjectId = require(''mongodb'').ObjectID;
var oid = new ObjectId();
db.things.find(_id: {$gt: oid});
No leer archivos mongoexport
Los archivos de exportación de Mongo se ven así:
{ "_id" : { "$oid" : "4f876b00c56da1fa6a000030" }, ...
Esta es una representación json de un id de objeto. Mongo no quiere que uses ese tipo de sintaxis cuando consultes la base de datos. Esto no funcionará:
# will not work
db.things.find("_id.$oid": {$gt: "string"});
id como una cadena
Si tienes el id como una cadena, harías:
var ObjectId = require(''mongodb'').ObjectID;
var str = "123456789012345678901234";
var oid = new ObjectId(str);
db.things.find(_id: {$gt: oid});
ID como una cadena parcial
Si la cadena que tiene no es un oid válido (no tiene una longitud de 24 caracteres), solo obtendrá una excepción de mongo, o según su controlador, un oid nuevo. Si tiene un ID de objeto parcial, puede rellenar con 0s para hacer un oid válido y, por lo tanto, permitir la búsqueda por ID de objeto parciales. p.ej:
var ObjectId = require(''mongodb'').ObjectID;
var oid = new ObjectId(str + "0000");
db.things.find(_id: {$gt: oid});