我有两个名为user和user_no_shard的集合。
用户集合包含位于shard_0中的100万个文档和位于shard_1中的100万个文档
user_no_shard集合包含位于shard_0
中的100万个文档我使用&#34;发现&#34;这些集合的命令。查找用户集合的所有文档耗时<6分钟, 3分钟查找user_no_shard集合的所有文档。
理论上,两次查询的时间是等价的。但它并不等同。
请帮忙解释一下!
答案 0 :(得分:1)
用户集合包含位于shard_0中的100万个文档和位于shard_1中的100万个文档。它意味着用户集合中总共存在200万个文档,而user_no_shard集合中只存在100万个文档。在这种情况下进行比较是不合适的。
在user_no_shard集合中有200万个文档,并且与用户集合进行比较是合适的。
在正确配置Sharding的情况下,mongodb会选择适当的分片来进行收集扫描,跳过要扫描的文档的一半。