I mongodb måste varje dokument vara unikt, så du behöver ett unikt fält för att användas som id. Om du inte tillhandahåller en, kommer mongodb att tillhandahålla en till dig automatiskt. Men om du vill ge anpassade ID av vilken anledning som helst (förbättra frågeprestanda är en av dem), kan du göra det manuellt. Här kommer mina förslag:
Om du infogar ett nytt dokument kan du manuellt ställa in _id-fältet som:
doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)
Men när du redan har ett dokument i databasen kan du inte ändra det längre. Vad du kan göra är att göra en kopia av dokumentet, spara ett nytt dokument med samma data och radera det gamla:
// 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})
}
Den här frågan liknar följande:
Hur uppdaterar _id för ett MongoDB-dokument?
Hoppas mitt svar var till hjälp