sql >> データベース >  >> NoSQL >> MongoDB

MongoDBの既存のインデックスを削除せずに変更できますか?

    あなたが説明するようにインデックスを変更する方法はありません。もしあれば、パフォーマンスの観点からの結果は似ていると思います。たとえば、この操作が行われている間、データベースは半分作成/変更されたインデックスをどのように使用しますか?

    代わりに、バックグラウンドオプションを使用して単一ノードでインデックスを作成することをお勧めします。これが構成の場合は、時間がかかりますが、通常の操作にそれほど干渉することはありません。それが終わったら、あなたはあなたの暇なときに古いインデックスを落とすことができます。

    ただし 、レプリカセット(推奨)がある場合、インデックスの作成は常に(現在)セカンダリのフォアグラウンドで行われることに注意してください。セカンダリへの負荷を回避したい場合は、ここで概説する手順に従って、メンバーを1つずつ取り出し、セットに再参加する前に必要なインデックスを作成する必要があります。

    http://docs.mongodb.org/manual/administration/indexes/#index-building-replica-sets

    更新

    2.6リリース以降、セカンダリでのバックグラウンドインデックスの構築が可能になります(詳細については、リリースノートを参照してください)。これは以前のバージョンにバックポートされることはないため、上記の注意事項は2.6より前のバージョンにも当てはまります。

    最後に、一般的な注意として、バックグラウンドで構築されたインデックスは、一般に、フォアグラウンドで構築されたインデックスよりも大きく、効率が低いため、上記の方法論には引き続き使用できます。




    1. Redis6.2.0より前のZRANGESTORE

    2. トップMongoDBリソース

    3. nosqlとの多対多の関係(mongodbおよびmongoose)

    4. 2つのフィールドを比較する際のMongoDbクエリ条件