这是一个名为' items'用3个碎片分片
每个碎片都有3个文件
当我查询路由器(mongos)时:items.find({id:{$ in:[1,2,3]}})
路由器是否操纵每个分片的查询? ex)items.find({id:{$ in:[1]}})=>路由查询到shard1
我想知道路由器是否只检测到映射分片或修改分片的查询
答案 0 :(得分:1)
据我所知,查询不会以任何方式被操纵。相反,查询被路由到任何可能包含基于查询的分片键部分的相关数据的分片。在查询不包含分片键的情况下,查询将路由到所有分片。
例如,如果您在id
字段上进行分片,则items.find({id: { $in: [1,2,3] }})
将发送到shard1
,shard2
和shard3
,而{{1}只会被发送到items.find({id: { $in: [1] }})
。此外,查询shard1
将发送到items.find({ref_id: { $in: [1] }})
,shard1
,shard2
以及群集中可能包含的任何其他分片。
分片键字段上的索引扫描应该足够快,无论如何都不需要操纵查询!