Jediný rozdíl je v tom, že jeden je ve skutečnosti ObjectId
a druhá je řetězcová reprezentace toho, co vypadá jako ObjectId
.
DBRef jako ObjectId:
db.persons.insert({name: 'cavin',
sister: new DBRef('persons',
new ObjectId('5165419064fada69cef33ea2'))}) // use an ObjectId
DBRef jako řetězec:
db.persons.insert({name: 'bob',
sister: new DBRef('persons',
'5165419064fada69cef33ea2')}) // use a string
V příkladu, který jste zahrnuli, ObjectId
formát by mohl vést k efektivnějšímu ukládání, protože se jedná o 12bajtovou hodnotu namísto 24 bajtů, které by vyžadovala řetězcová reprezentace. Pokud jste chtěli použít DBRef
s, použil bych ObjectId
pokud odkazovaná kolekce používá ObjectId
s pro _id
.
Nemusíte používat ObjectId
v DBRef
. Může to být jakákoli hodnota, která představuje klíč (_id
) související sbírky/DB.
Jako dokumentaci
navrhuje, pokud nemáte pádný důvod pro použití DBRef
, použijte ruční odkazy.