MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie entferne ich _id in MongoDB und ersetze es durch ein anderes Feld als Primärschlüssel?

In mongodb muss jedes Dokument eindeutig sein, daher benötigen Sie ein eindeutiges Feld, das als ID verwendet werden kann. Wenn Sie keine bereitstellen, stellt mongodb automatisch eine für Sie bereit. Wenn Sie jedoch aus irgendeinem Grund benutzerdefinierte IDs vergeben möchten (Verbesserung der Abfrageleistung ist einer davon), können Sie dies manuell tun. Hier sind meine Vorschläge:

Wenn Sie ein neues Dokument einfügen, können Sie das _id-Feld wie folgt manuell festlegen:

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

Wenn Sie jedoch bereits ein Dokument in der Datenbank haben, können Sie es nicht mehr ändern. Was Sie tun können, ist, eine Kopie des Dokuments zu erstellen, ein neues Dokument mit denselben Daten zu speichern und das alte zu löschen:

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

Diese Frage ähnelt der folgenden:

Wie aktualisiere ich die _id eines MongoDB-Dokuments?

Ich hoffe, meine Antwort war hilfreich