MongoDB查询所有没有shardkey的分片集合



我有几个碎片(ed)集合。集合是用户请求。分片键为User Id。

我有一个名为"执行时间"的字段我想查询一段时间内的所有请求(lte和gte)。

索引有分片键,但我的查询没有。我不想用"in"操作符将所有的分片键放在查询中,因为我有1000个分片键(用户)。为了进一步做到这一点,我需要在每次查询中获得所有用户id -这意味着每次查询2次而不是1次。

但是我仍然想使用索引…添加userId> 0 <maxUserId到查询?>

正确的方法是什么?

Thanks in advance

为了获得理想的性能,分片键的选择应该让路由器(mongos)知道哪个分片将拥有最常见查询的数据。这只有在find-query的条件也是分片键时才有可能。

但是在这种情况下,路由器不可能告诉哪个分片有查询的数据。每个分片上都有相关的结果,这不是不可能的。在这种情况下,查询需要转发到所有分片,这些分片将同时处理它。但是当你有一个合适的索引,这将有助于他们这样做。

最新更新