W mongodb każdy dokument musi być unikalny, więc potrzebujesz unikalnego pola, które będzie używane jako identyfikator. Jeśli go nie podasz, mongodb dostarczy go automatycznie. Jeśli jednak chcesz nadać niestandardowe identyfikatory z dowolnego powodu (poprawa wydajności zapytań jest jednym z nich), możesz to zrobić ręcznie. Oto moje sugestie:
Jeśli wstawiasz nowy dokument, możesz ręcznie ustawić pole _id, takie jak:
doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)
Ale kiedy masz już dokument w bazie danych, nie możesz go już modyfikować. Możesz zrobić kopię dokumentu, zapisać nowy dokument z tymi samymi danymi i usunąć stary:
// 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})
}
To pytanie jest podobne do następującego:
Jak zaktualizować _id jednego dokumentu MongoDB?
Mam nadzieję, że moja odpowiedź była pomocna