如果我在分片键中有 MongoDB shurded 集群:“my_key”。 我必须在收藏包文档(大约 10-500 个项目)中找到具有不同 my_key 的。 敌人的例子:
db.test.find({my_key: {$in:[1,3,5,67,45,56...]}})
Mongos 知道带有“my_key”的 block 存储在哪里。 mongos 能否将我的查询拆分为小查询,精确到存储文档的分片?或者 mongos 会将此查询发送到所有分片吗?
关于 $or 的同样问题
db.test.find({$or:[{my_key: 1},{my_key: 3},{my_key: 5}...]})
最佳答案
我已经运行了测试。
如果 $in 仅包含来自一个分片的值,mongos 将发送 SINGLE_SHARD 查询。
如果 $in 包含来自多个分片的值,那么 mongos 将仅针对包含所需数据的分片(并非所有集群)发送 SHARD_MERGE 查询。
关于Mongodb 分片集群 $in VS $or,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32026504/