بافتراض مخطط بخاصية _id
، أريد الاستعلام باستخدام عامل تشغيل $gt
. استعلام MongoDB المكافئ:
db.applications.find({ _id : { $gt : ObjectId("53ddb3c00000000000000000") } })
ولكن ، على جانب النمس ، عند استخدام كائن من النوع ObjectId ، فإنه يرمي:
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' }
*/
كما تفعل سلسلة بسيطة:
Application.find({ _id : { $gt : minimumObjectIdString } })
لقد جربت شيئًا مجنونًا مثل:
Application.find({ _id : { $gt : "ObjectId('" + minimumObjectIdString + "')" } })
@ vkarpov15 ، أعتقد أن هذا قد يكون أيضًا مشكلة في السائق الأصلي الأساسي ، حيث حاولت أن أفعل شيئًا مثل:
Application.collection.find({ _id : { $gt : "53f0c1850000000000000000" } }, function(err, cursor) {
console.log(err)
cursor.toArray(function(results){
console.log(results);
})
})
ماذا تفعل للحصول على minimumObjectIdString
؟ يجب استخدام mongoose.Types.ObjectId
بدلاً من mongoose.Schema.ObjectId
var minimumObjectId = new mongoose.Types.ObjectId(minimumObjectIdString);
Applcation.find({ _id : { $gt : minimumObjectId } })
يجب أن تعمل مع سلسلة أيضًا.
هذا لا يعمل بالنسبة لي
التعليق الأكثر فائدة
هذا لا يعمل بالنسبة لي