【mongoDB实战】limit,skip,sort

2024-08-28 14:32
文章标签 实战 mongodb limit skip sort

本文主要是介绍【mongoDB实战】limit,skip,sort,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在mongo中最常用的查询选项就是限制返回结果的数量,忽略一定数量的结果并排序.所有这些选项一定要在查询被派发到服务器之前添加.在这里需要用到的就是limit,skip,sort这三个函数了.这三个函数都可以达到限制返回结果数量的目的,但是他们之间还有区别.

1.limit

要限制结果数量,可以在find后使用limit函数.这个函数类似分页的每页多少条数据,例如,如果每页是2条数据,如果匹配的结果达不到2条,则返回匹配结果的数量,如果匹配结果大于2条,则返回2条.

limit-取这个表的前两条数据
db.getCollection('activity').find({}).limit(2)




2.skip

skip和limit最大的区别就是skip是从满足匹配条件的略过符合表数据的前*条数据,显示数据.例如,共四条满足匹配条件,则显示后两条数据.

skip-取这个表的后两条数据
db.getCollection('activity').find({}).skip(2)



3.sort

sort用一个对象作为参数:一对键/值对,键对应文档的键名,值代表排序的方向.排序方向可以是1(升序),-1(降序),如果指定了多个键,则按照多个键的顺序进行排序.

例如:按照activityCode这个字段进行升序排序,就可以这样写:

db.getCollection('activity').find({}).sort({activityCode:1})




三个函数组合使用

这三个函数可以组合使用,对于分页非常有用.例如:某商家想要查询activity这个表,并且按照activityCode按照升序排序,就可以使用下面的查询语句.

db.getCollection('activity').find({}).limit(2).sort({activityCode:1})(未添加了查询条件的)
如果某商家想要查询activityType为1,并且按照 activityCode按照升序排序,就可以使用下面的查询语句.

db.getCollection('activity').find({"activityType":0}).limit(2).sort({activityCode:1})(添加了查询条件的)


三者一块组合,可以理解为每页2条数据,点击"下一页"可以看到更多的结果,通过skip可以非常简单的实现,只需要略过前2个即可(已经在第一页显示了).

db.getCollection('activity').find({"activityType":0}).limit(2).skip(1).sort({activityCode:1})


如果skip的数量过多,可能会导致性能的问题,不建议这么使用.这样就体现不到mongo的优点了.

总结:

        这三个函数各有各自的用处,limit可以理解为用于分页中第一页显示的条数,skip可以理解为"下一页"显示的条数,sort可以理解为分页中按照哪个字段来进行排序.

这篇关于【mongoDB实战】limit,skip,sort的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115031

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr