"primary_key"というフィールドを持つコレクションがあるとします。 {"primary_key": "1234"、 "name": "jimmy"、 "lastname": "page"}
私は "primary_key"のインデックスを持っています。
このコレクションには何百万もの行があります。いずれかのレコードのprimary_keyを変更するのがどれほど費用がかかるかを見てください。それはテーブル全体の再インデックスをトリガーしますか?または変更されたレコードを再インデックスするだけですか?どちらの場合でも、それは高価ですか?
回答:
回答№1は1mongodbのインデックスフィールドを更新すると、それを使用する索引(または索引が複数ある場合は索引)の更新。それは「再索引付け」しません。それほど費用がかかりません。事実上古いエントリを削除して新しいエントリを挿入します。
このドキュメントでは、mongodbインデックスについてかなりの詳細があります。
http://docs.mongodb.org/master/MongoDB-indexes-guide.pdf
ところで、mongodbがプライマリキーとして使う1つの特別なフィールド_idがあることに注意してください
_id すべてのMongoDB文書に必要なフィールド。 _idフィールドには一意の値が必要です。 _idフィールドはドキュメントのものと考えることができます 主キー。 _idフィールドを付けずに新しい文書を作成すると、 MongoDBは自動的にフィールドを作成し、独自のBSONを割り当てます ObjectId。
_idフィールドは更新できません。