Cá nhân tôi, đổ lỗi cho mã của bạn. Tôi vượt qua điều này một cách hoàn hảo trong các ứng dụng của mình bằng cách viết mã đúng cách. Tôi chuyển đổi thành chuỗi trong mã để so sánh và tôi đảm bảo rằng bất kỳ thứ gì trông giống như một ObjectId
thực sự được sử dụng như một ObjectId
.
Cần lưu ý rằng giữa ObjectId
(http://docs.mongodb.org/manual/reference/object-id/) và đó là biểu diễn hex trên thực tế có 12 byte chênh lệch, ObjectId
là 12 byte và biểu diễn hex của nó là 24.
Không chỉ là về hiệu quả lưu trữ mà còn về chỉ số; không chỉ vì chúng nhỏ hơn mà còn vì ObjectId
có thể được sử dụng theo cách đặc biệt để đảm bảo rằng chỉ các phần của chỉ mục được tải; các bộ phận được sử dụng. Điều này trở nên đáng chú ý nhất khi chèn, trong đó chỉ phần mới nhất của chỉ mục đó cần được tải vào để đảm bảo tính duy nhất. Bạn không thể đảm bảo hành vi như vậy với biểu diễn hex của nó.
Tôi thực sự khuyên bạn không nên sử dụng OjbectId
biểu diễn hex của. Nếu bạn muốn "làm cho cuộc sống của mình dễ dàng hơn", bạn nên tạo một _id
khác nhỏ hơn nhưng bằng cách nào đó vẫn độc đáo và thân thiện với chỉ mục.