फर्क सिर्फ इतना है कि वास्तव में एक ObjectId है और दूसरा ObjectId . जैसा दिखता है, उसका एक स्ट्रिंग प्रतिनिधित्व है .
ऑब्जेक्ट आईडी के रूप में DBRef:
db.persons.insert({name: 'cavin',
sister: new DBRef('persons',
new ObjectId('5165419064fada69cef33ea2'))}) // use an ObjectId
एक स्ट्रिंग के रूप में DBRef:
db.persons.insert({name: 'bob',
sister: new DBRef('persons',
'5165419064fada69cef33ea2')}) // use a string
आपके द्वारा शामिल किए गए उदाहरण में, ObjectId प्रारूप के परिणामस्वरूप अधिक कुशल भंडारण हो सकता है क्योंकि यह 24 बाइट्स के बजाय 12-बाइट मान है जो स्ट्रिंग प्रतिनिधित्व की आवश्यकता होगी। यदि आप DBRef . का उपयोग करना चाहते हैं s, मैं एक ObjectId का उपयोग करूंगा यदि संदर्भित संग्रह ObjectId . का उपयोग कर रहा है _id . के लिए ।
आपको ObjectId . का उपयोग करने की आवश्यकता नहीं है एक DBRef
में . यह कोई भी मान हो सकता है जो कुंजी का प्रतिनिधित्व करता है (_id ) संबंधित संग्रह/डीबी का।
दस्तावेज़ीकरण
के रूप में सुझाव देता है, जब तक कि आपके पास DBRef . का उपयोग करने के लिए कोई ठोस कारण न हो , इसके बजाय मैन्युअल संदर्भों का उपयोग करें।