Ответ 1
Сравните с подобными
Ключ _id
в mongo не является (по умолчанию) строкой - это mongo objectId.
Вам нужно сравнить один и тот же тип, чтобы получить осмысленный результат:
oid = new ObjectId();
db.things.find(_id: {$gt: oid});
Не читать файлы mongoexport
Файлы экспорта Mongo выглядят следующим образом:
{ "_id" : { "$oid" : "4f876b00c56da1fa6a000030" }, ...
Это json-представление идентификатора объекта. Mongo не хочет, чтобы вы использовали такой синтаксис, когда на самом деле запрашивали db. Это не сработает:
# will not work
db.things.find("_id.$oid": {$gt: "string"});
id как строка
Если у вас есть идентификатор в виде строки, вы должны:
str = "123456789012345678901234";
oid = new ObjectId(str);
db.things.find(_id: {$gt: oid});
id как частичная строка
Если строка, которая у вас есть, не является допустимым значением (не 24 символа), вы получите только исключение из монго - или в зависимости от вашего драйвера, нового. Если у вас есть идентификатор частичного объекта, вы можете заполнить 0s, чтобы сделать действительную маску, и, следовательно, разрешить поиск с помощью идентификаторов частичных объектов. например:.
oid = new ObjectId(str + "0000");
db.things.find(_id: {$gt: oid});