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

Come rimuovere _id in MongoDB e sostituirlo con un altro campo come chiave primaria?

In mongodb ogni documento deve essere univoco, quindi è necessario un campo univoco da utilizzare come ID. Se non ne fornisci uno, mongodb te ne fornirà uno automaticamente. Tuttavia, se vuoi fornire ID personalizzati per qualsiasi motivo (migliorare le prestazioni delle query essendo uno di questi), puoi farlo manualmente. Ecco i miei suggerimenti:

Se stai inserendo un nuovo documento, puoi impostare manualmente il campo _id come:

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

Ma quando hai già un documento nel database, non puoi più modificarlo. Quello che puoi fare è fare una copia del documento, salvare un nuovo documento con gli stessi dati e cancellare quello vecchio:

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

Questa domanda è simile alla seguente:

Come aggiornare l'_id di un documento MongoDB?

Spero che la mia risposta sia stata utile