Osobiście obwiniam twój kod. Poradzę sobie z tym doskonale w moich aplikacjach, kodując we właściwy sposób. Konwertuję na ciąg w kodzie do porównania i upewniam się, że wszystko, co wygląda jak ObjectId
jest faktycznie używany jako ObjectId
.
Warto zauważyć, że pomiędzy ObjectId
(http://docs.mongodb.org/manual/reference/object-id/) i jego reprezentacja szesnastkowa ma w rzeczywistości 12 bajtów różnicy, ObjectId
ma 12 bajtów, a jego reprezentacja szesnastkowa to 24.
Nie chodzi tylko o wydajność pamięci masowej, ale także o indeksy; nie tylko dlatego, że są mniejsze, ale także dlatego, że ObjectId
może być używany w specjalny sposób, aby zapewnić, że ładowane są tylko części indeksu; używane części. Staje się to najbardziej zauważalne podczas wstawiania, gdzie tylko najnowsza część tego indeksu musi zostać załadowana, aby zapewnić niepowtarzalność. Nie możesz zagwarantować takiego zachowania z jego reprezentacją szesnastkową.
Zdecydowanie polecam nie używać OjbectId
szesnastkowa reprezentacja. Jeśli chcesz „ułatwić sobie życie”, lepiej byłoby utworzyć inny _id
który jest mniejszy, ale jakoś tak samo wyjątkowy i przyjazny dla indeksów.