मैं, व्यक्तिगत रूप से, आपके कोड को दोष देता हूं। मैं अपने अनुप्रयोगों में सही तरीके से कोडिंग करके इस पूरी तरह से ठीक हो जाता हूं। मैं तुलना करने के लिए कोड में स्ट्रिंग में कनवर्ट करता हूं और मैं यह सुनिश्चित करता हूं कि जो कुछ भी ObjectId . जैसा दिखता है वास्तव में ObjectId . के रूप में उपयोग किया जाता है ।
यह नोट करना अच्छा है कि ObjectId . के बीच (https://docs.mongodb.org/manual/reference/object-id/) और इसका हेक्स प्रतिनिधित्व वास्तव में 12 बाइट्स का अंतर है, ObjectId 12 बाइट होने के नाते और इसका हेक्स प्रतिनिधित्व 24 है।
यह न केवल भंडारण दक्षता के बारे में है बल्कि सूचकांक के बारे में भी है; सिर्फ इसलिए नहीं कि वे छोटे हैं बल्कि ObjectId . के बाद से भी यह सुनिश्चित करने के लिए एक विशेष तरीके से उपयोग किया जा सकता है कि सूचकांक के केवल कुछ हिस्सों को लोड किया गया है; जिन भागों का उपयोग किया जाता है। यह सम्मिलित करते समय सबसे अधिक ध्यान देने योग्य हो जाता है, जहां विशिष्टता सुनिश्चित करने के लिए उस सूचकांक के केवल नवीनतम भाग को लोड करने की आवश्यकता होती है। आप इस तरह के व्यवहार को इसके हेक्स प्रतिनिधित्व के साथ गारंटी नहीं दे सकते।
मैं दृढ़ता से अनुशंसा करता हूं कि आप OjbectId . का उपयोग न करें हेक्स प्रतिनिधित्व। यदि आप "अपना जीवन आसान बनाना चाहते हैं" तो बेहतर होगा कि आप एक अलग _id बनाएं जो छोटा है लेकिन किसी भी तरह अद्वितीय और अनुक्रमणिका अनुकूल है।