Không.
Không phải để tạo một ObjectId, nhưng bạn có thể bao gồm một ObjectId trong JSON với ký hiệu sau:
{ "test" : { "$oid" : "5519e8ac996ef7f4636bfaec" } }
Điều này sẽ tạo ra một trường có tên là test
với giá trị ObjectId("5519e8ac996ef7f4636bfaec")
. Giá trị của khóa $oid
cần phải là một ObjectId hợp lệ.
Có, đó là những gì bạn sẽ cần để tạo các giá trị ObjectId. Bạn có thể viết một tập lệnh nhỏ bằng cách sử dụng, ví dụ:trình điều khiển Python để thực hiện nhập và tạo ObjectId như một phần của nó hoặc sử dụng mongoimport, sau đó quét bộ sưu tập và cập nhật từng tài liệu con bằng 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)
} )
Lưu ý rằng, trừ khi có một số lý do cụ thể để có _id / ObjectId trên một tài liệu con, như _id
là một tham chiếu đến một tài liệu khác, không cần thiết và cũng không nên đặt một ObjectId trên mọi tài liệu con.