La única diferencia es que uno es en realidad un ObjectId
y el otro es una representación de cadena de lo que parece ser un ObjectId
.
DBRef como ID de objeto:
db.persons.insert({name: 'cavin',
sister: new DBRef('persons',
new ObjectId('5165419064fada69cef33ea2'))}) // use an ObjectId
DBRef como una cadena:
db.persons.insert({name: 'bob',
sister: new DBRef('persons',
'5165419064fada69cef33ea2')}) // use a string
En el ejemplo que incluiste, el ObjectId
El formato podría dar como resultado un almacenamiento más eficiente, ya que es un valor de 12 bytes en lugar de los 24 bytes que requeriría la representación de cadena. Si desea utilizar DBRef
s, usaría un ObjectId
si la colección a la que se hace referencia usa ObjectId
s para el _id
.
No es necesario que utilice un ObjectId
en un DBRef
. Puede ser cualquier valor que represente la clave (_id
) de la colección/DB relacionada.
Como la documentación
sugiere, a menos que tenga una razón convincente para usar un DBRef
, use referencias manuales en su lugar.