Tidak.
Bukan untuk menghasilkan ObjectId, tetapi Anda dapat menyertakan ObjectId di JSON dengan notasi berikut:
{ "test" : { "$oid" : "5519e8ac996ef7f4636bfaec" } }
Ini akan membuat bidang yang disebut test
dengan nilai ObjectId("5519e8ac996ef7f4636bfaec")
. Nilai kunci $oid
harus berupa ObjectId yang valid.
Ya, itulah yang Anda perlukan untuk menghasilkan nilai ObjectId. Anda dapat menulis skrip kecil menggunakan, misalnya, driver Python untuk melakukan impor dan menghasilkan ObjectId sebagai bagian darinya, atau menggunakan mongoimport lalu memindai koleksi dan memperbarui setiap subdokumen dengan ObjectId:
> db.test.find()
{ "_id" : ObjectId("5519e8ac996ef7f4636bfaec"), "a" : [ { "x" : 1 }, { "y" : 2 } ] }
> db.test.find().forEach(function(doc) {
for (var i = 0; i < doc.a.length; i++) {
doc.a[i]._id = ObjectId()
}
db.test.update({ "_id" : doc._id }, doc)
} )
Perhatikan bahwa, kecuali ada alasan khusus untuk memiliki _id/ObjectId pada subdokumen, seperti _id
adalah referensi ke dokumen lain, tidak perlu atau tidak diinginkan untuk menempatkan ObjectId pada setiap subdokumen.