首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分片集群上的MongoDB跳过()和限制()

分片集群上的MongoDB跳过()和限制()
EN

Stack Overflow用户
提问于 2019-05-04 12:02:41
回答 1查看 598关注 0票数 1

如果在已分片的mongodb集群上运行以下查询,则查询是分散/聚集类型。

代码语言:javascript
复制
find({"product": "laptop"}).sort({"year": 1}).skip(15).limit(5)

和跳过+限制(组合)是适用于芒果或个人碎片(即单神)?

或者mongos向每个碎片发送限制(20),即sum(skip+limit)以优化查询,然后在返回客户端之前对收集的结果应用跳过(15).limit(5)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-04 14:07:05

我想我找到了你怀疑的答案。您可以阅读整个文档部分这里,但您感兴趣的部分是:

mongos如何处理查询修饰符 排序 如果查询的结果没有排序,mongos实例将打开一个结果游标,即“循环”从碎片上的所有游标中得到。 限制 如果查询使用limit()游标方法限制结果集的大小,则mongos实例将该限制传递给碎片,然后在将结果返回给客户端之前重新应用对结果的限制。 跳绳 如果查询使用skip()游标方法指定要跳过的多条记录,则mongos不能将跳过传递给碎片,而是从碎片中检索未跳过的结果,并在组装完整结果时跳过适当数量的文档。 当与limit()一起使用时,mongos将把限制加上skip()的值传递给碎片,以提高这些操作的效率。

如果您担心性能问题,那么最好的方法就是使用explain获取查询计划。在同一文档中,指定:

有关聚合工作如何在分块集群查询的组件之间分离的更多信息,请使用explain:true作为aggregation()调用的参数。返回将包括三个json对象。mergeType显示合并的阶段(“primaryShard”、“anyShard”或“mongos”)。splitPipeline显示管道中的哪些操作在单个碎片上运行。shards显示了每个碎片所做的工作。

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

https://stackoverflow.com/questions/55982314

复制
相关文章

相似问题

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