Comparer ce qui est comparable
Le _id
key dans mongo n'est pas (par défaut) une chaîne - c'est un objectId mongo.
Vous devez comparer au même type pour obtenir un résultat significatif :
var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId();
db.things.find(_id: {$gt: oid});
Ne pas lire les fichiers mongoexport
Les fichiers d'exportation Mongo ressemblent à ceci :
{ "_id" : { "$oid" : "4f876b00c56da1fa6a000030" }, ...
Il s'agit d'une représentation json d'un identifiant d'objet. Mongo ne veut pas que vous utilisiez ce type de syntaxe lors de l'interrogation de la base de données. Cela ne fonctionnera pas :
# will not work
db.things.find("_id.$oid": {$gt: "string"});
id sous forme de chaîne
Si vous avez l'identifiant sous forme de chaîne, vous feriez :
var ObjectId = require('mongodb').ObjectID;
var str = "123456789012345678901234";
var oid = new ObjectId(str);
db.things.find(_id: {$gt: oid});
id en tant que partiel chaîne
Si la chaîne que vous avez n'est pas un oid valide (pas 24 caractères de long), vous obtiendrez juste une exception de mongo - ou selon votre pilote, un nouvel oid. Si vous avez un identifiant d'objet partiel, vous pouvez remplir avec des 0 pour créer un oid valide et donc permettre la recherche par identifiants d'objet partiels. par exemple :
var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId(str + "0000");
db.things.find(_id: {$gt: oid});