La seule différence est qu'il s'agit en fait d'un ObjectId
et l'autre est une représentation sous forme de chaîne de ce qui semble être un ObjectId
.
DBRef en tant qu'ObjectId :
db.persons.insert({name: 'cavin',
sister: new DBRef('persons',
new ObjectId('5165419064fada69cef33ea2'))}) // use an ObjectId
DBRef sous forme de chaîne :
db.persons.insert({name: 'bob',
sister: new DBRef('persons',
'5165419064fada69cef33ea2')}) // use a string
Dans l'exemple que vous avez inclus, le ObjectId
format pourrait entraîner un stockage plus efficace car il s'agit d'une valeur de 12 octets au lieu des 24 octets requis par la représentation sous forme de chaîne. Si vous vouliez utiliser DBRef
s, j'utiliserais un ObjectId
si la collection référencée utilise ObjectId
s pour le _id
.
Vous n'êtes pas obligé d'utiliser un ObjectId
dans un DBRef
. Il peut s'agir de n'importe quelle valeur représentant la clé (_id
) de la collection/DB associée.
Comme la documentation
suggère, sauf si vous avez une raison impérieuse d'utiliser un DBRef
, utilisez plutôt des références manuelles.