查询复合键Sharded Mongo

时间:2012-05-31 12:57:19

标签: mongodb sharding composite-key

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

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

2 个答案:

答案 0 :(得分: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},并根据现有文档创建块范围)。

因此,在您的情况下,查询应该转到单个分片。

答案 1 :(得分:0)

在mongo db中,如果在多个字段上有复合索引,则可以使用它来查询字段的起始子集。所以如果你有一个索引

a,b,c

你可以在

上使用它查询
a
a,b
a,b,c

不确定shardng是否以相同的方式工作。