首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB碎片路由器是否操作$in查询?

MongoDB碎片路由器是否操作$in查询?
EN

Stack Overflow用户
提问于 2018-05-15 02:34:27
回答 1查看 44关注 0票数 1

有一个名为“items”的集合,它用3个碎片进行切分

三个文件属于每个碎片

  • 带有id的文档:1 ->属于shard1
  • 带有id:2 ->的文档属于shard2
  • 带有id:3 ->的文档属于shard3

当我查询路由器(Mongos):items.find({id:{ $in: 1,2,3 })时

路由器是否操纵每个碎片的查询?items.find({id:{ $in: 1}) =>路由查询到shard1

我想知道路由器是只检测映射碎片还是修改对碎片的查询。

EN

回答 1

Stack Overflow用户

发布于 2018-05-15 02:59:24

据我所知,查询绝不是被操纵的。相反,查询被路由到可能包含基于查询的切分键部分的相关数据的任何碎片。在查询不包含碎片键的情况下,查询将被路由到所有碎片。

例如,如果您在id字段上分解,那么items.find({id: { $in: [1,2,3] }})将被发送到shard1shard2shard3,而items.find({id: { $in: [1] }})只会被发送到shard1。此外,查询items.find({ref_id: { $in: [1] }})将发送到shard1shard2shard3和集群中的任何其他碎片。

无论如何,shard键字段上的索引扫描应该足够快,甚至不需要操作查询!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50341525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档