シャーディングされたクラスターの運用上の制限
項目一覧
シャーディング操作上の制限
シャーディングされた環境で利用できない操作
$where
は、 $where
関数からdb
オブジェクトへの参照を許可していません。 これは、シャーディングされていないコレクションでは珍しいことです。
geoSearch
コマンドはシャーディングされた環境ではサポートされていません。
MongoDB 5.0 以前のバージョンでは、$lookup
ステージのfrom
パラメーターでシャーディングされたコレクションを指定できません。
シャーディングされたコレクションにおける単一ドキュメントの変更操作
multi: false
またはjustOne
オプションを指定するシャーディングされたコレクションに対してupdateOne()
およびdeleteOne()
操作を使用するには以下に従ってください。
1つのシャードのみをターゲットにする場合は、クエリ仕様で部分的なシャードキーを使用するか、
クエリ仕様でシャードキーまたは
_id
フィールドを指定できます。
シャーディングされたコレクションでfindOneAndUpdate()
を使用するには、クエリフィルターにシャードキーの等価条件が含まれている必要があり、次のいずれかの形式でキーと値を比較する必要があります。
{ key: value } { key: { $eq: value } }
シャーディングされたコレクションにおけるユニークインデックス
MongoDB は、ユニークインデックスにインデックスのプレフィックスとして完全なシャードキーが含まれている場合を除き、シャード間のユニークインデックスをサポートしていません。このような状況では、MongoDB は単一のフィールドではなく、キー全体に対して一意性を強制します。
コンシステント インデックス
MongoDB はシャード間で一貫したインデックスを保証しません。 addShard
操作または チャンク移行 中のインデックス作成は、新しいシャードに伝達されない可能性があります。
シャーディングされたクラスターの整合性のあるインデックスを確認するには、 checkMetadataConsistency
コマンドを使用します。
db.runCommand( { checkMetadataConsistency: 1, checkIndexes: true } )