Den eneste forskel er, at man faktisk er et ObjectId
og den anden er en strengrepræsentation af, hvad der ser ud til at være et ObjectId
.
DBRef som et objekt-id:
db.persons.insert({name: 'cavin',
sister: new DBRef('persons',
new ObjectId('5165419064fada69cef33ea2'))}) // use an ObjectId
DBRef som en streng:
db.persons.insert({name: 'bob',
sister: new DBRef('persons',
'5165419064fada69cef33ea2')}) // use a string
I eksemplet du inkluderede, ObjectId
format kunne resultere i mere effektiv lagring, da det er en 12-byte værdi i stedet for de 24 bytes, som strengrepræsentationen ville kræve. Hvis du ville bruge DBRef
s, ville jeg bruge et ObjectId
hvis den refererede samling bruger ObjectId
s for _id
.
Du er ikke forpligtet til at bruge et ObjectId
i en DBRef
. Det kan være en hvilken som helst værdi, der repræsenterer nøglen (_id
) af den relaterede samling/DB.
Som dokumentationen
foreslår, medmindre du har en tvingende grund til at bruge en DBRef
, brug manuelle referencer i stedet.