0

mongoコレクションの複合シャードキーを作成しました:{catalog_id:1、category_id:1}

一意であることが保証されているcatalog_idだけでコレクションをクエリすると、クエリはすべてのシャードに送信されますか?

4

2 に答える 2

1

一般に、クエリは、そのクエリに関連するチャンク範囲を含むシャードに移動します。あなたの場合、catalog_id が実際に一意であることが保証されている場合、同じ catalog_id 範囲に対して複数のチャンクはありません (たとえば、範囲 {catalog_id : 12, category : "a"} を持つ 1 つのチャンクはありません)。 {catalog_id : 12, category : "m"} まで、および範囲 {catalog_id : 12, category : "n"} から {catalog_id : 12, category : "z"} までの別のチャンク。 {catalog_id : 12} で、チャンク範囲は既存のドキュメントに基づいて作成されます)。

したがって、あなたの場合、クエリは単一のシャードに移動する必要があります。

于 2012-06-01T21:20:33.940 に答える
0

mongo db では、複数のフィールドに複合インデックスがある場合、それを使用してフィールドの最初のサブセットをクエリできます。したがって、インデックスがある場合

a,b,c

クエリを使用できます

a
a,b
a,b,c

shardng が同じように機能するかどうかはわかりません。

于 2012-05-31T16:29:48.470 に答える