Mongoose: Abfragen von ObjectIds mit den Operatoren $lt und $gt

Erstellt am 3. Sept. 2014  ·  3Kommentare  ·  Quelle: Automattic/mongoose

Unter der Annahme eines Schemas mit einer normalen _id Eigenschaft möchte ich mit einem $gt Operator abfragen. Äquivalente MongoDB-Abfrage:

db.applications.find({ _id : { $gt : ObjectId("53ddb3c00000000000000000") } })

Auf der Mungo-Seite wird jedoch bei Verwendung eines Objekts mit dem ObjectId-Typ Folgendes ausgelöst:

var minimumObjectId = new mongoose.Schema.ObjectId(minimumObjectIdString);
Applcation.find({ _id : { $gt : minimumObjectId } }) 
/*
{ [CastError: Cast to ObjectId failed for value "ObjectId('53de7ea3000000000000000')" at path "_id"]
  message: 'Cast to ObjectId failed for value "ObjectId(\'53de7ea3000000000000000\')" at path "_id"',
  name: 'CastError',
  type: 'ObjectId',
  value: 'ObjectId(\'53de7ea3000000000000000\')',
  path: '_id' }
*/

Ebenso wie ein einfacher String:

Application.find({ _id : { $gt : minimumObjectIdString } })

Ich habe sogar etwas Verrücktes ausprobiert wie:

Application.find({ _id : { $gt : "ObjectId('" + minimumObjectIdString + "')" } })

Hilfreichster Kommentar

das geht bei mir nicht

Alle 3 Kommentare

@vkarpov15 , ich denke, dies kann auch ein Problem im zugrunde liegenden mongo-native-driver sein, da ich versucht habe,

Application.collection.find({ _id : { $gt : "53f0c1850000000000000000" } }, function(err, cursor) {
    console.log(err)
    cursor.toArray(function(results){
        console.log(results);
    })
})

Was tun Sie, um minimumObjectIdString ? Sie sollten mongoose.Types.ObjectId anstelle von mongoose.Schema.ObjectId

var minimumObjectId = new mongoose.Types.ObjectId(minimumObjectIdString);
Applcation.find({ _id : { $gt : minimumObjectId } }) 

Es sollte auch mit einem String funktionieren.

das geht bei mir nicht

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen