有一个名为“items”的集合,它用3个碎片进行切分
三个文件属于每个碎片
当我查询路由器(Mongos):items.find({id:{ $in: 1,2,3 })时
路由器是否操纵每个碎片的查询?items.find({id:{ $in: 1}) =>路由查询到shard1
我想知道路由器是只检测映射碎片还是修改对碎片的查询。
发布于 2018-05-15 02:59:24
据我所知,查询绝不是被操纵的。相反,查询被路由到可能包含基于查询的切分键部分的相关数据的任何碎片。在查询不包含碎片键的情况下,查询将被路由到所有碎片。
例如,如果您在id字段上分解,那么items.find({id: { $in: [1,2,3] }})将被发送到shard1、shard2和shard3,而items.find({id: { $in: [1] }})只会被发送到shard1。此外,查询items.find({ref_id: { $in: [1] }})将发送到shard1、shard2、shard3和集群中的任何其他碎片。
无论如何,shard键字段上的索引扫描应该足够快,甚至不需要操作查询!
https://stackoverflow.com/questions/50341525
复制相似问题