sql >> Databasteknik >  >> NoSQL >> MongoDB

Skapa _id på underdokument på mongoimport --jsonArray

Nej.

Inte för att generera ett ObjectId, men du kan inkludera ett ObjectId i JSON med följande notation:

{ "test" : { "$oid" : "5519e8ac996ef7f4636bfaec" } }

Detta skulle skapa ett fält som heter test med värdet ObjectId("5519e8ac996ef7f4636bfaec") . Värdet på nyckeln $oid måste vara ett giltigt ObjectId.

Ja, det är vad du behöver för att generera ObjectId-värdena. Du kan antingen skriva ett litet skript med t.ex. Python-drivrutinen för att importera och generera ObjectId's som en del av det, eller använda mongoimport och sedan skanna samlingen och uppdatera varje underdokument med ett 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)
} )

Observera att om det inte finns någon specifik anledning att ha ett _id/ObjectId på ett underdokument, som _id är en referens till ett annat dokument, är det varken nödvändigt eller önskvärt att sätta ett ObjectId på varje underdokument.




  1. Ställ in lagringsplatsen för MongoDB installerad på AWS EC2 Instance till EBS-lagring. Och hur återställer jag den efter att instans har stoppats/avslutats?

  2. Bygga en maskininlärningsapplikation med Cloudera Data Science Workbench och operativ databas, del 1:Konfigurationen och grunderna

  3. Hur man får flera matchande filter i mongoDB

  4. Hur kan jag få de lägsta värdena i en MongoDB-samling?