В mongodb всеки документ трябва да е уникален, така че ви е необходимо уникално поле, което да се използва като id. Ако не предоставите такъв, mongodb ще ви го предостави автоматично. Въпреки това, ако искате да дадете персонализирани идентификатори по каквато и да е причина (подобряване на производителността на заявката е една от тях), можете да го направите ръчно. Ето моите предложения:
Ако вмъквате нов документ, можете ръчно да зададете полето _id като:
doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)
Но когато вече имате документ в базата данни, вече не можете да го променяте. Това, което можете да направите, е да направите копие на документа, да запишете нов документ със същите данни и да изтриете стария:
// 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})
}
Този въпрос е подобен на следния:
Как да актуализирате _id на един MongoDB документ?
Надявам се, че отговорът ми е бил полезен