No.
Non per generare un ObjectId, ma puoi includere un ObjectId nel JSON con la seguente notazione:
{ "test" : { "$oid" : "5519e8ac996ef7f4636bfaec" } }
Questo creerebbe un campo chiamato test
con valore ObjectId("5519e8ac996ef7f4636bfaec")
. Il valore della chiave $oid
deve essere un ObjectId valido.
Sì, è ciò di cui avrai bisogno per generare i valori ObjectId. Puoi scrivere un piccolo script utilizzando, ad esempio, il driver Python per eseguire l'importazione e generare ObjectId come parte di esso, oppure utilizzare mongoimport e quindi scansionare la raccolta e aggiornare ogni documento secondario con un 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)
} )
Nota che, a meno che non ci sia un motivo specifico per avere un _id/ObjectId su un documento secondario, come il _id
è un riferimento a un altro documento, non è né necessario né auspicabile inserire un ObjectId su ogni documento secondario.