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.