Der einzige Unterschied besteht darin, dass es sich tatsächlich um eine ObjectId
handelt und der andere ist eine Zeichenfolgendarstellung dessen, was wie eine ObjectId
aussieht .
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 dem von Ihnen eingefügten Beispiel die ObjectId
-Format könnte zu einer effizienteren Speicherung führen, da es sich um einen 12-Byte-Wert anstelle der 24 Bytes handelt, die die Zeichenfolgendarstellung erfordern würde. Wenn Sie DBRef
verwenden möchten s würde ich eine ObjectId
verwenden wenn die referenzierte Sammlung ObjectId
verwendet s für die _id
.
Sie müssen keine ObjectId
verwenden in einem DBRef
. Es kann ein beliebiger Wert sein, der den Schlüssel darstellt (_id
) der zugehörigen Sammlung/DB.
Als Dokumentation
schlägt vor, es sei denn, Sie haben einen zwingenden Grund für die Verwendung eines DBRef
, verwenden Sie stattdessen manuelle Referenzen.