0

我为 mongo 集合创建了一个复合分片键:{catalog_id:1,category_id:1}

现在,如果我仅通过保证唯一的 catalog_id 查询集合,查询会转到所有分片吗?

4

2 回答 2

1

通常,查询将转到包含该查询相关块范围的任何分片。在您的情况下,如果确实保证 catalog_id 是唯一的,那么对于相同的 catalog_id 范围,您将不会有多个块(例如,您不会有一个范围为 {catalog_id : 12, category : "a"} 的块到 {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 回答