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

Hvordan fjerner man _id i MongoDB og erstatter med et andet felt som en primær nøgle?

I mongodb skal hvert dokument være unikt, så du skal bruge et unikt felt for at blive brugt som id. Hvis du ikke leverer en, vil mongodb automatisk levere en til dig. Men hvis du vil give brugerdefinerede id'er uanset årsag (forbedring af forespørgselsydeevne er en af ​​dem), kan du gøre det manuelt. Her kommer mine forslag:

Hvis du indsætter et nyt dokument, kan du manuelt indstille _id-feltet som:

doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)

Men når du allerede har et dokument i databasen, kan du ikke ændre det længere. Det du kan gøre er at lave en kopi af dokumentet, gemme et nyt dokument med de samme data og slette det gamle:

// Fetch the documents
docs = db.clients.find({})

docs.forEach((doc) => {
   //For each field you copy the values
   new_doc.field = doc.field
   new_doc._id = //YOUR ID FUNCTION 

   // insert the document, using the new _id
   db.clients.insert(new_doc)

   // remove the document with the old _id
   db.clients.remove({_id: doc._id})
}

Dette spørgsmål ligner det følgende:

Hvordan opdaterer _id'et for ét MongoDB-dokument?

Håber mit svar var nyttigt



  1. MongoDB Hvordan får vi alle AKTUELLE åbne markører og de forespørgsler, de kører?

  2. $geoNear matchende nærmeste array

  3. Hent flere forespurgte elementer i et objektarray i MongoDB-samlingen

  4. Mongodb:sorter dokumenter efter array-objekter