Единствената разлика е, че единият всъщност е ObjectId
а другият е низово представяне на това, което изглежда като ObjectId
.
DBRef като ObjectId:
db.persons.insert({name: 'cavin',
sister: new DBRef('persons',
new ObjectId('5165419064fada69cef33ea2'))}) // use an ObjectId
DBRef като низ:
db.persons.insert({name: 'bob',
sister: new DBRef('persons',
'5165419064fada69cef33ea2')}) // use a string
В примера, който включихте, ObjectId
може да доведе до по-ефективно съхранение, тъй като това е 12-байтова стойност вместо 24-те байта, които би изисквало представянето на низ. Ако искате да използвате DBRef
s, бих използвал ObjectId
ако реферираната колекция използва ObjectId
s за _id
.
Не се изисква да използвате ObjectId
в DBRef
. Може да бъде всяка стойност, която представлява ключа (_id
) от свързаната колекция/DB.
Като документация
предлага, освен ако нямате убедителна причина да използвате DBRef
, вместо това използвайте ръчни препратки.