Mongoose: query terhadap ObjectIds dengan operator $lt dan $gt

Dibuat pada 3 Sep 2014  ·  3Komentar  ·  Sumber: Automattic/mongoose

Dengan asumsi Skema dengan properti _id normal, saya ingin menanyakan dengan operator $gt . Kueri MongoDB yang setara:

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

Tapi, di sisi luwak, saat menggunakan objek dengan tipe ObjectId, ia melempar:

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' }
*/

Seperti halnya String sederhana:

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

Saya bahkan sudah mencoba sesuatu yang gila seperti:

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

Komentar yang paling membantu

ini tidak bekerja untuk saya

Semua 3 komentar

@vkarpov15 , saya pikir ini mungkin juga menjadi masalah pada driver mongo-asli yang mendasarinya, ketika saya mencoba melakukan sesuatu seperti:

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

Apa yang Anda lakukan untuk mendapatkan minimumObjectIdString ? Anda harus menggunakan mongoose.Types.ObjectId daripada mongoose.Schema.ObjectId

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

Ini harus bekerja dengan string juga.

ini tidak bekerja untuk saya

Apakah halaman ini membantu?
0 / 5 - 0 peringkat