假设我的集合使用由 BlockHash 和 BlockHeight 字段组成的复合分片键。
如果我运行查询以查找给定 BLockHeight 的文档,由于我们没有按 BlockHash 过滤,Mongo 是否必须命中每个分片?在分片键中有 BlockHeight 对查询有帮助吗?
答案 0 :(得分:1)
理想情况下,每个查询都应该有分片键。根据数据的基数和逻辑分类进行选择。
如果您在 BlockHash 和 BlockHeight 上进行分片(按此顺序),并且您只需在 BlockHeight 上运行查询。你最终会击中所有的碎片。
作为最佳实践,请养成在查询中运行 .explain("executionStats") 的习惯。这将告诉您如何解析查询。以及它接触了哪些碎片。