sql >> Database >  >> NoSQL >> MongoDB

Hoe _id in MongoDB te verwijderen en te vervangen door een ander veld als primaire sleutel?

In mongodb moet elk document uniek zijn, dus je hebt een uniek veld nodig om als id te gebruiken. Als u er geen verstrekt, zal Mongodb er automatisch een voor u verstrekken. Als u echter om welke reden dan ook aangepaste id's wilt geven (waarbij de prestaties van query's er een van zijn), kunt u dit handmatig doen. Hier komen mijn suggesties:

Als u een nieuw document invoegt, kunt u het _id-veld handmatig instellen zoals:

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

Maar als u al een document in de database heeft, kunt u het niet meer wijzigen. Wat u kunt doen, is een kopie van het document maken, een nieuw document met dezelfde gegevens opslaan en het oude wissen:

// 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})
}

Deze vraag lijkt op de volgende:

Hoe update je de _id van één MongoDB-document?

Ik hoop dat mijn antwoord nuttig was



  1. Selecteer op basis van tijdstempel en update tijdstempel met nul

  2. best mogelijke schema-ontwerp voor log-analysedatabase in mongodb

  3. ServiceStack.Net Redis:gerelateerde objecten opslaan versus gerelateerde object-ID's

  4. Hoe een geüploade afbeelding in de back-end van Keystonejs te tonen