Het enige verschil is dat men eigenlijk een ObjectId
. is en de andere is een tekenreeksrepresentatie van wat lijkt op een ObjectId
.
DBref als ObjectId:
db.persons.insert({name: 'cavin',
sister: new DBRef('persons',
new ObjectId('5165419064fada69cef33ea2'))}) // use an ObjectId
DBref als string:
db.persons.insert({name: 'bob',
sister: new DBRef('persons',
'5165419064fada69cef33ea2')}) // use a string
In het voorbeeld dat u hebt opgenomen, is de ObjectId
formaat kan resulteren in efficiëntere opslag omdat het een waarde van 12 bytes is in plaats van de 24 bytes die de tekenreeksrepresentatie zou vereisen. Als u DBRef
. wilt gebruiken s, zou ik een ObjectId
. gebruiken als de verzameling waarnaar wordt verwezen, ObjectId
gebruikt s voor de _id
.
U bent niet verplicht om een ObjectId
. te gebruiken in een DBRef
. Het kan elke waarde zijn die de sleutel vertegenwoordigt (_id
) van de gerelateerde collectie/DB.
Zoals de documentatie
suggereert, tenzij je een dwingende reden hebt voor het gebruik van een DBRef
, gebruik in plaats daarvan handmatige verwijzingen.