V mongodb musí být každý dokument jedinečný, takže jako id potřebujete jedinečné pole. Pokud žádný nezadáte, mongodb vám ho automaticky poskytne. Pokud však chcete poskytnout vlastní ID z jakéhokoli důvodu (jedním z nich je zlepšit výkon dotazů), můžete to udělat ručně. Zde jsou mé návrhy:
Pokud vkládáte nový dokument, můžete ručně nastavit pole _id jako:
doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)
Ale když již máte dokument v databázi, nemůžete jej dále upravovat. Co můžete udělat, je vytvořit kopii dokumentu, uložit nový dokument se stejnými daty a vymazat ten starý:
// 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})
}
Tato otázka je podobná následující:
Jak aktualizovat _id jednoho dokumentu MongoDB?
Doufám, že moje odpověď byla užitečná