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.