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

Opret _id på underdokumenter på mongoimport --jsonArray

Nej.

Ikke for at generere et ObjectId, men du kan inkludere et ObjectId i JSON med følgende notation:

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

Dette ville skabe et felt kaldet test med værdien ObjectId("5519e8ac996ef7f4636bfaec") . Værdien af ​​nøglen $oid skal være et gyldigt ObjectId.

Ja, det er det, du skal bruge for at generere ObjectId-værdierne. Du kan enten skrive et lille script ved at bruge f.eks. Python-driveren til at importere og generere ObjectId'er som en del af det, eller bruge mongoimport og derefter scanne samlingen og opdatere hvert underdokument med et 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)
} )

Bemærk, at medmindre der er en specifik grund til at have et _id/ObjectId på et underdokument, såsom _id er en reference til et andet dokument, er det hverken nødvendigt eller ønskeligt at sætte et ObjectId på hvert underdokument.




  1. Kan et listefelt være en shard-nøgle i MongoDB?

  2. Hvordan forbedrer man Redis-serverens CPU-brug?

  3. Få en tydelig aggregering af et matrixfelt på tværs af indekser

  4. Hvorfor får Mongo-hint en forespørgsel til at køre op til 10 gange hurtigere?