MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

requête mongoDB WHERE _id> seuil

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});