So sánh like với like
_id
key trong mongo không phải (theo mặc định) là một chuỗi - nó là một objectId trong mongo.
Bạn cần so sánh với cùng loại để nhận được kết quả có ý nghĩa:
var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId();
db.things.find(_id: {$gt: oid});
Không đọc tệp mongoexport
Các tệp xuất Mongo trông giống như sau:
{ "_id" : { "$oid" : "4f876b00c56da1fa6a000030" }, ...
Đây là một biểu diễn json của một id đối tượng. Mongo không muốn bạn sử dụng kiểu cú pháp đó khi thực sự truy vấn db. Điều này sẽ không hoạt động:
# will not work
db.things.find("_id.$oid": {$gt: "string"});
id dưới dạng một chuỗi
Nếu bạn có id là một chuỗi, bạn sẽ thực hiện:
var ObjectId = require('mongodb').ObjectID;
var str = "123456789012345678901234";
var oid = new ObjectId(str);
db.things.find(_id: {$gt: oid});
id dưới dạng một phần chuỗi
Nếu chuỗi bạn có không phải là oid hợp lệ (không dài 24 ký tự), bạn sẽ chỉ nhận được một ngoại lệ từ mongo - hoặc tùy thuộc vào trình điều khiển của bạn, một oid mới. Nếu bạn có id đối tượng một phần, bạn có thể thêm các số 0 để tạo oid hợp lệ và do đó cho phép tìm kiếm theo id đối tượng một phần. ví dụ:
var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId(str + "0000");
db.things.find(_id: {$gt: oid});