नहीं।
एक ObjectId जनरेट करने के लिए नहीं, लेकिन आप JSON में एक ObjectId को निम्नलिखित नोटेशन के साथ शामिल कर सकते हैं:
{ "test" : { "$oid" : "5519e8ac996ef7f4636bfaec" } }
यह test . नामक एक फ़ील्ड बनाएगा मान के साथ ObjectId("5519e8ac996ef7f4636bfaec") . कुंजी का मान $oid एक वैध ObjectId होना आवश्यक है।
हां, यही आपको ObjectId मान जेनरेट करने की आवश्यकता होगी। आप या तो एक छोटी स्क्रिप्ट लिख सकते हैं, उदाहरण के लिए, आयात करने के लिए पायथन ड्राइवर और इसके हिस्से के रूप में ObjectId उत्पन्न करें, या mongoimport का उपयोग करें और फिर संग्रह को स्कैन करें और प्रत्येक उप-दस्तावेज़ को 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)
} )
ध्यान दें, जब तक कि उप-दस्तावेज़ पर _id/ObjectId रखने का कोई विशिष्ट कारण न हो, जैसे _id किसी अन्य दस्तावेज़ का संदर्भ है, प्रत्येक उप-दस्तावेज़ पर ऑब्जेक्ट आईडी डालना न तो आवश्यक है और न ही वांछनीय है।