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.