MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Crea _id su documenti secondari su mongoimport --jsonArray

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.