Satu-satunya perbedaan adalah bahwa yang satu sebenarnya adalah ObjectId
dan yang lainnya adalah representasi string dari apa yang tampak sebagai ObjectId
.
DBRef sebagai ObjectId:
db.persons.insert({name: 'cavin',
sister: new DBRef('persons',
new ObjectId('5165419064fada69cef33ea2'))}) // use an ObjectId
DBRef sebagai String:
db.persons.insert({name: 'bob',
sister: new DBRef('persons',
'5165419064fada69cef33ea2')}) // use a string
Dalam contoh yang Anda sertakan, ObjectId
format dapat menghasilkan penyimpanan yang lebih efisien karena ini adalah nilai 12 byte, bukan 24 byte yang diperlukan oleh representasi string. Jika Anda ingin menggunakan DBRef
s, saya akan menggunakan ObjectId
jika koleksi yang direferensikan menggunakan ObjectId
s untuk _id
.
Anda tidak diharuskan menggunakan ObjectId
dalam DBRef
. Itu bisa berupa nilai apa pun yang mewakili kunci (_id
) dari koleksi/DB terkait.
Sebagai dokumentasi
menyarankan, kecuali Anda memiliki alasan kuat untuk menggunakan DBRef
, gunakan referensi manual sebagai gantinya.