sql >> Database teknologi >  >> NoSQL >> MongoDB

mongoDB-forespørgsel WHERE _id> tærskel

Sammenlign like med like

_id nøgle i mongo er ikke (som standard) en streng - det er et mongo objekt-id.

Du skal sammenligne med den samme type for at få et meningsfuldt resultat:

var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId();
db.things.find(_id: {$gt: oid});

Læs ikke mongoexport-filer

Mongo-eksportfiler ser sådan ud:

{ "_id" : { "$oid" : "4f876b00c56da1fa6a000030" }, ...

Dette er en json-repræsentation af et objekt-id. Mongo vil ikke have, at du bruger den slags syntaks, når du rent faktisk forespørger i db. Dette vil ikke virke:

# will not work
db.things.find("_id.$oid": {$gt: "string"});

id som en streng

Hvis du har id'et som en streng, skal du gøre:

var ObjectId = require('mongodb').ObjectID;
var str = "123456789012345678901234";
var oid = new ObjectId(str);
db.things.find(_id: {$gt: oid});

id som en delvis streng

Hvis strengen du har ikke er en gyldig oid (ikke 24 tegn lang), får du bare en undtagelse fra mongo - eller afhængigt af din driver, en ny oid. Hvis du har et delvist objekt-id, kan du udfylde med 0'er for at lave en gyldig oid og derfor tillade at finde med delvise objekt-id'er. f.eks.:

var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId(str + "0000");
db.things.find(_id: {$gt: oid});



  1. Hvordan konverteres en streng til ObjectId i nodejs mongodb native driver?

  2. MongoDB advarsler om udfasning ved brug af Mongoose

  3. Moongoose samlede $match matcher ikke id'er

  4. Networkx bliver aldrig færdig med at beregne Betweenness centrality for 2 mil noder