MongoDB的分页排序

我们已经学过MongoDB的 find() 查询功能了,在关系型数据库中的选取(limit),排序(sort) MongoDB中同样有,而且使用起来更是简单

首先我们看下添加几条Document进来

现在有四条Document 根据它们, 对 Limit Skip Sort 分别展开学习 最后来一个 大杂烩

1. Limit 选取 : 我要从这些 Document 中取出多少个

做个小例子 : 我只要 2 条 Document

结果是很明显的,很赤裸裸的,很一丝不挂的

但是我还是要解释一下 : limit(2) 就是选取两条Document, 从整个Collection的第一条 Document 开始选取两条

如果我们不想从第一条Document开始选取,怎么办呢?

2.Skip 跳过 : 我要跳过多少个Document

做个小例子 : 我要跳过前两个 Document 直接从第三个Document 开始

结果还是很明显,很赤裸

按照国际惯例解释一下 : skip(2) 就是跳过两条Document, 从整个Collection 的第一条 Document 开始跳,往后跳两条

另一个例子 : 跳过第一条 直接从 第二条 开始

问题来了,我只想要第二条和第三条怎么处理呢?

3.Limit + Skip : 从这儿到那儿 的 选取

就是刚才的问题,一个小例子 : 我只想要第二条和第三条怎么处理呢

国际惯例 : 跳过第一条Document 从第二条开始选取两条 Document

别着急,还有另一种写法

两种写法完全得到的结果完全一样但是国际惯例的解释却不同

国际惯例 : 选取两条Document 但是要 跳过 第一条Document 从 第二条 开始 选取

绕了半天,都晕了,注意这里特别要注意了!!!!!! 这里的两种写法,一定一定一定要记住一个,因为只要记住一个就行了,完全完全没区别,一个符合中国人的理解,一个是其他国家的理解

4. Sort 排序 : 将结果按照关键字排序

做个小例子 : 将find出来的Document 按照 price 进行 升序 | 降序 排列

国际惯例 : 按照 price 字段进行升序 , 1 为升序 , -1 为降序

5. Limit + Skip + Sort 混搭来一把

一个例子 : 选取第二条第三条 并 按照 price 进行 升序排列

问题出现了, 按道理不应该是 9800 然后 19800 吗?

知识点来喽

重点 : Sort + Skip + Limit 是有执行优先级的 他们的界别分别是 优先 Sort  其次 Skip 最后 Limt

Skip + Limit 的优先级 也是先 Skip 再 Limit

原文地址:https://www.cnblogs.com/wqzn/p/10279603.html

时间: 2024-08-02 15:43:55

MongoDB的分页排序的相关文章

mysql 两表联查分页排序效率优化

数据库中有两张表 t1 存储消息信息 +-----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI |

MongoDB实现分页(两种方法)

1.插入实验数据 偷懒用下samus,100条. 1 for (int i = 0; i < 100; i++) 2 { 3 Document doc = new Document(); 4 doc["ID"] = i; 5 doc["Msg"] = "value is "+ i; 6 mongoCollection.Insert(doc); 7 } 插入成功 2.分页 方法一:通过sike()与limit()方法 如下图, 通过 db.m

使用redis完成搜索/分页/排序

功能:根据用户展示pn的相关信息,能搜索具体的pn, 可以分页 思路:redis常用结构第一就想到了hash,可以搜索和存储信息:Sorted Set 可以搜索和截取 将Pn存储在两种结构中,先从set分页后,在去hash获取具体内容 数据格式: '用户ID1' => [ 'pnNumber1' => [ 'pnName' => 'E', 'pnCategory' => 'A', 'pnDesc' => 'C' ], 'pnNumber2' => [ 'pnName'

Ruby操作MongoDB(进阶七)-排序规则Collations

本篇博文从三个方面进行排序规则Collations的讲解.其中包括概览,使用方式和支持排序的操作.首先我们对排序规则进行一个概览性的介绍 排序规则概览 排序规则为特定语言习惯中的字符串比较提供一套规则,例如,在加拿大法语中,给定词汇的最后一个重音节决定了其排序顺序. 考虑下述法语词汇: cote < coté < cte < cté 使用加拿大法语排序规则,得到如下排序结果 cote < cte < coté < cté 如果没有指定排序规则,MongoDB使用简单的二

Oracle分页排序的实现与分页数据重复问题

对于关系数据库来说,直接写SQL拉数据在列表中显示是很常用的做法.但如此便带来一个问题:当数据量大到一定程度时,系统内存迟早会耗光.另外,网络传输也是问题.如果有1000万条数据,用户想看最后一条,这时即便有足够的内存,在网络上传输这么多数据也得一两小时吧,恐怕没几个用户有这么耐心等.因此分页是必须的. 现在网上的论坛.博客什么的,基本上都会有分页功能,有些是SQL分页的,有些可能是NOSQL用其它方法分页,都有很成熟的东西了.本文根据我自己的经验,以ORACLE为例,讲下简单的SQL分页和排序

中继器的使用——搜索/分页/排序

1.搜索: 1)单一条件搜索: 步骤: 判断输入是否为空: 不为空,按输入的条件检索: 为空,展示全部 不为空的用例: 为空的用例: 2)组合条件搜索 步骤: 姓名.部门都不为空: 姓名为空,部门不为空: 姓名不为空.部门为空: 姓名.部门为空 姓名.部门都不为空的情况设置如下: 姓名筛选: 部门筛选: fx设置: 2.排序: 为增大排序点击范围,使用"热区",在热区中添加点击排序事件 3)分页 首页: 上一页/下一页/尾页 页码显示设置方法: 新增文本标签,清空内容,控件命名:页码显

Lucence.Net+添加关键词+分页+排序

1.使用queryparser完成解析搜索请求 2.基本格式如: QueryParser parser=new QueryParser("字段名称","分析器实例"); Query q=parser.parse("关键词") 3.例如:解析一个关键字太阳 QueryParser parser=new QueryParser("context",new StandardAnalyzer()); Query q=parser.pa

jquery easyui datagrid mvc server端分页排序筛选的实现

1自定义一个ModelBinder public class filterRule { public string field { get; set; } public string op { get; set; } public string value { get; set; } } public class dataGridFilter { public dataGridFilter() { filterRules = new HashSet<filterRule>(); } publi

基于JPA的分页/排序实现

Page<ClassOrder> findByMember_MemberID(long id, Pageable pageable); Controller代码: public ModelAndView showsignupclass(int page){ ModelAndView mv=new ModelAndView("/user/user-showSignupClass.btl"); Member member=memberRepository.findAll().g