mongodbでは、各ドキュメントは一意である必要があるため、idとして使用するには一意のフィールドが必要です。提供しない場合、mongodbが自動的に提供します。ただし、何らかの理由でカスタムIDを指定する場合(クエリのパフォーマンスを向上させる場合)は、手動で行うことができます。これが私の提案です:
新しいドキュメントを挿入する場合は、次のように_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})
}
この質問は次の質問に似ています:
1つのMongoDBドキュメントの_idを更新するにはどうすればよいですか?
私の答えがお役に立てば幸いです