目录

MongoDB Limit与Skip方法

MongoDB Limit() 方法

语法

实例

MongoDB Skip() 方法

语法

实例

MongoDB 排序

MongoDB sort() 方法

语法

实例

MongoDB 索引

createIndex() 方法

语法

实例

实例

MongoDB 聚合

aggregate() 方法

语法

实例


MongoDB Limit与Skip方法


MongoDB Limit() 方法

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

语法

limit()方法基本语法如下所示:

db.COLLECTION_NAME.find().limit(NUMBER)

实例

集合 col 中的数据如下:

{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

以下实例为显示查询文档中的两条记录:

db.col.find({},{"title":1,_id:0}).limit(2)
{ "title" : "PHP 教程" }
{ "title" : "Java 教程" }

注:如果你们没有指定limit()方法中的参数则显示集合中的所有数据。


MongoDB Skip() 方法

我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

语法

skip() 方法脚本语法格式如下:

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

实例

以下实例只会显示第二条文档数据

db.col.find({},{"title":1,_id:0}).limit(1).skip(1)
{ "title" : "Java 教程" }

注:skip()方法默认参数为 0 。


MongoDB 排序


MongoDB sort() 方法

在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

语法

sort()方法基本语法如下所示:

db.COLLECTION_NAME.find().sort({KEY:1})

实例

col 集合中的数据如下:

{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

以下实例演示了 col 集合中的数据按字段 likes 的降序排列

db.col.find({},{"title":1,_id:0}).sort({"likes":-1})
{ "title" : "PHP 教程" }
{ "title" : "Java 教程" }
{ "title" : "MongoDB 教程" }// 返回指定的title的键值

skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。


MongoDB 索引

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。

这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构


createIndex() 方法

MongoDB使用 createIndex() 方法来创建索引。

注意在 3.0.0 版本前创建索引方法为 db.collection.ensureIndex(),之后的版本使用了 db.collection.createIndex() 方法,ensureIndex() 还能用,但只是 createIndex() 的别名。

语法

createIndex()方法基本语法格式如下所示:

db.collection.createIndex(keys, options)

语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。

实例

db.col.createIndex({"title":1})

createIndex() 方法中你也可以设置使用多个字段创建索引(关系型数据库中称作复合索引)

db.col.createIndex({"title":1,"description":-1})

createIndex() 接收可选参数,可选参数列表如下:

Parameter Type Description
background Boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false
unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
name string 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDups Boolean 3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparse Boolean 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSeconds integer 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
v index version 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weights document 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_language string 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_override string 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.

实例

在后台创建索引:

db.values.createIndex({open: 1, close: 1}, {background: true})

1、查看集合索引

db.col.getIndexes()

2、查看集合索引大小

db.col.totalIndexSize()

3、删除集合所有索引

db.col.dropIndexes()

4、删除集合指定索引

db.col.dropIndex("索引名称")

MongoDB 聚合

MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。

有点类似 SQL 语句中的 count(*)。


aggregate() 方法

MongoDB中聚合的方法使用aggregate()。

语法

aggregate() 方法的基本语法格式如下所示:

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

实例

集合中的数据如下:

现在我们通过以上集合计算每个作者所写的文章数,使用aggregate()计算结果如下:

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{"result" : [{"_id" : "runoob.com","num_tutorial" : 2},{"_id" : "Neo4j","num_tutorial" : 1}],"ok" : 1
}

以上实例类似sql语句:

select by_user, count(*) from mycol group by by_user
{_id: ObjectId(7df78ad8902c)title: 'MongoDB Overview', description: 'MongoDB is no sql database',by_user: 'runoob.com',url: 'http://www.runoob.com',tags: ['mongodb', 'database', 'NoSQL'],likes: 100
},
{_id: ObjectId(7df78ad8902d)title: 'NoSQL Overview', description: 'No sql database is very fast',by_user: 'runoob.com',url: 'http://www.runoob.com',tags: ['mongodb', 'database', 'NoSQL'],likes: 10
},
{_id: ObjectId(7df78ad8902e)title: 'Neo4j Overview', description: 'Neo4j is no sql database',by_user: 'Neo4j',url: 'http://www.neo4j.com',tags: ['neo4j', 'database', 'NoSQL'],likes: 750
},

MangoDB索引、排序和聚合相关推荐

  1. 微服务项目之电商--19.ElasticSearch基本、高级查询和 过滤、结果过滤、 排序和聚合aggregations

    接上一篇 目录 3.查询 3.1.基本查询: 3.1.1 查询所有(match_all) 3.1.2 匹配查询(match) 3.1.3 多字段查询(multi_match) 3.1.4 词条匹配(t ...

  2. ES 设置支持/禁用排序、聚合的mapping parameters

    doc_values doc_values参数是为了加快排序.聚合操作,在建立倒排索引的时候,额外增加一个列式存储映射,是一种空间换时间的做法.默认是开启的,大多数字段在索引时都会生成doc_valu ...

  3. pandas中dataframe索引排序实战:pandas中dataframe索引降序排序、pandas中dataframe索引升序排序

    pandas中dataframe索引排序实战:pandas中dataframe索引降序排序.pandas中dataframe索引升序排序 目录

  4. 内排序及时间复杂度分析-插入排序选择排序交换排序归并排序分配和索引排序对比...

    基本概念 什么是排序? 排序 将序列中的记录按照排序码顺序排列起来 排序码域的值具有不减(或不增)的顺序 内排序 整个排序过程在内存中完成 给定一个序列 R = { r1, r2, ...,rn } ...

  5. java 索引排序_Java培训MySQL之排序分组优化索引的选择

    索引的选择 ①首先,清除emp上面的所有索引,只保留主键索引! drop index idx_age_deptid_name on emp; ②查询:年龄为30岁的,且员工编号小于101000的用户, ...

  6. Pandas数据排序——【按索引排序sort_index()方法、按值排序sort_value()方法】

    文章目录 按索引排序--sort_index() 对Series排序 对DataFrame排序 按值排序--sort_value() 对Series进行排序 对DataFrame进行排序 按索引排序- ...

  7. python dataframe转置_Dataframe数据的增删改查,对齐(相加),转置,按值(索引)排序

    数据转置 行列标签一起转置,利用.T实现 # -*- coding: utf-8 -*- import pandas as pd d = {'col1': [1,2,3], 'col2': [4,5, ...

  8. Mysql如何才能走索引排序?

    一条SQL到底能不能走索引排序? 实际遇到的场景比较多,总结记录到下表,后面不断补充. 一些结论 1.in查询排序:与范围查询的区别在于,in后面的等值查询依然可以走索引,范围查询不可以.排序行为与范 ...

  9. js排序数组并返回排序后原数组的索引排序

    背景:最近一朋友面试,二面机试题,题目大意是: 从百度天气的一个api取得天气数据,前端展示天气数据,穿衣指数,点击温度栏进行一个升温降温排序,以及不排序 接口地址:http://api.map.ba ...

  10. mongodb索引生成HTML页面,mongodb高阶:索引创建、聚合查询、复制集、分片、创建备份和部署...

    先前我们讨论了mongodb的进阶查询:投影查询.分页查询以及对查询结果进行排序,从本节起我们开始学习mongodb相关的高级技术,首先我们会讨论mongodb如何创建索引,索引是数据库中最重要的东西 ...

最新文章

  1. 对MBProgressHUD进行封装并精简使用
  2. 定义一维数组一定要指定个数吗_6.1 C语言一维数组
  3. Spring原理简述
  4. UI组件之TextView及其子类(四)AnalogClock,DigitalClock
  5. 开放下载!阿里云开发者学堂配套教材《JVM实战》
  6. jzoj5353-村通网【最小生成树】
  7. Java 线程状态---WAITING(部分转载)
  8. 能运行lsdyna的服务器,ansys ls-dyna运行出错 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  9. 统计学习方法第15章-奇异值分解SVD
  10. windows系统下搭建私有nuget仓储服务器, 打包程序集并推送到私有nuget仓储服务器...
  11. usb驱动修复_win10 1903 5月29号的质量更新修复了哪些问题?
  12. 一文详解:中信银行java笔试题库
  13. miix4linux双系统,联想Miix4 Pro一键重装系统win10教程
  14. 在VMware中安装ArchLinux
  15. 已知一点经纬度及与另一点距离和航向,求另一点经纬度
  16. angular项目如何配置国际化(i18n)?
  17. 应用程序,软件,小程序,APP的区别?
  18. MFC界面设计——AUDK
  19. 《安富莱嵌入式周报》第283期:全开源逆向“爆破”硬件工具,Linux内核6.1将正式引入RUST语言,I3C培训教程,80款市场成熟的电感式位置传感器设计
  20. 谷歌浏览器表格无法导入_如何从另一个Google表格导入数据

热门文章

  1. 五笔拼音反查精灵 v6.69 绿色版
  2. c语言指针的作用 举例,c语言指针详解(c语言指针用法举例)
  3. 大数据应用于生活,目前主要应用在哪些领域?
  4. 服务器接口文档详细 接口文档模板 规范 完整
  5. 带你学习《深入理解计算机系统》程序性能优化探讨(5)——高速缓存、存储器山与矩阵乘法优化
  6. Java内存模型是什么
  7. Colab与谷歌云盘结合使用
  8. 使用Java根据约定格式生成MySQL建表语句
  9. 2020.9.28 爱客影视3.6.5-pro完整版搭建完毕带解析接口无广告
  10. vue项目-jQuery中Nicescroll滚动条插件的用法