Jedyna różnica polega na tym, że w rzeczywistości jest to ObjectId a drugi to ciąg znaków reprezentujący coś, co wygląda na ObjectId .
DBRef jako identyfikator obiektu:
db.persons.insert({name: 'cavin',
sister: new DBRef('persons',
new ObjectId('5165419064fada69cef33ea2'))}) // use an ObjectId
DBRef jako ciąg:
db.persons.insert({name: 'bob',
sister: new DBRef('persons',
'5165419064fada69cef33ea2')}) // use a string
W podanym przykładzie ObjectId format może skutkować bardziej wydajnym przechowywaniem, ponieważ jest to wartość 12-bajtowa zamiast 24 bajtów, których wymagałaby reprezentacja ciągu. Jeśli chcesz użyć DBRef s, użyłbym ObjectId jeśli kolekcja, do której się odwołuje, używa ObjectId s dla _id .
Nie musisz używać ObjectId w DBRef
. Może to być dowolna wartość reprezentująca klucz (_id ) powiązanej kolekcji/bazy danych.
Jako dokumentacja
sugeruje, chyba że masz przekonujący powód, aby użyć DBRef , zamiast tego użyj odnośników ręcznych.