如果我选择{a:1,b:1,c:1}
作为分片键,并且在查询中我按哈希分片策略过滤{a:1}
,那么该查询是否是目标操作或正在广播到集群中的每个分片? / p>
如果是有针对性的操作,mongodb如何确定呢?因为{a:1}
的哈希值与{a:1,b:1,c:1}
的哈希值完全不同
答案 0 :(得分:0)
简单的回答是:是的。
这样看:
让我们假设您有以下收藏:
//1
{
a: 1,
b: 1,
c: 1,
d: 1
},
//2
{
a: 1,
b: 1,
c: 1,
d: 2
},
//3
{
a: 1,
b: 1,
c: 2,
d: 5
}
根据您的索引,文档1和2必须具有相同的批量(例如,在1号分片上),而文档3可以存储在不同的批量(例如,在2号分片上)
现在,如果您搜索{a:1},则应同时显示所有三个文档。这意味着mongo必须将que分发到1号和2号分片。
关于第二个问题,在MongoDb中,您将根本无法执行Compound-Hashed-Index(即使可以,也可以执行...是的。哈希值可能是diff)