一、排序

 1、sort()方法

  1)语法

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

    参数说明:

            ①KEY:指定排序的字段。

            ②1:升序方式。(默认按照)

               -1:降序方式。

  2)示例

      1、根据年龄(year)进行升序排序,结果中只显示name、year两个字段

      

group mongodb 排序 mongodb _id 排序_字段

注意:

           ①第一个{}:存放where条件,为空表示返回集合中所有文档。

           ②第二个{}:要查询的字段有哪些,1表示显示,0表示不显示。

           ③默认情况下,"_id"字段为1,其它字段中只要有一个字段为1,则另一些字段就为0。

 

二、索引

1、索引:提高查询速度,有索引之后,仅需扫描索引列即可(不需扫描全部内容),

2、createIndex()方法(创建索引3.0.0版本后)

   1)语法

db.COLLECTION_NAME.createIndex({<key>:<n>})

     参数说明:

             ①key:要创建的索引字段(键)名。

             ②n

                     1:按升序创建索引,

                     0:按降序创建索引。

    

   2)  createIndex()可以接受的参数(可选参数)

参数

类型

描述

background

Boolean

true:指定以后台方式创建索引

false:默认情况

unique

Boolean

建立的索引是否唯一

true:创建唯一索引

false:默认情况

name

string

索引名称。

 未指定,通过连接索引的字段名和排序顺序生成一个索引名称。

dropDups

Boolean

建立唯一索引时是否删除重复记录

true:创建唯一索引

false:默认情况

sparse

Boolean

文档中不存在的字段数据不启用索引

true:索引字段中不会查询出不包含对应字段的文档。

false:默认情况

expireAfterSeconds

integer

指定一个以秒为单位的数值,完成TTL设定,设定集合的生存时间

v

index version

索引的版本号。

mongod创建索引时运行的版本(默认情况下)

weights

document

索引权重值(1-99999之间)。

该索引相对于其它索引字段的比重值

default_language

string

对于文本索引,停用词及词干和词器的规则列表(默认英语)

language_override

string

对于文本索引,指定包含在文档中的字段名,语言覆盖默认的language(默认值为language)

     3)示例

       1、在后台使用name字段(按升序)创建索引(增加background:true选项)

    

group mongodb 排序 mongodb _id 排序_group mongodb 排序_02

   3、使用"name"、"year"字段创建索引

db.col.createIndex({"name":1,"year":1})

 4)索引的其它方法

     ①db.COLLECTION_NAME.dropIndex(index)       移除集合指定的索引功能(index为需要删除的集合索引名)

     ②db.COLLECTION_NAME.getIndexes()              返回一个集合中的现有索引描述信息的文档数组

     ③db.COLLECTION_NAME.dropIndexes()            移除集合的索引功能

     ④db.COLLECTION_NAME.reIndex()                    删除指定集合上所有索引,重新构建所有现有索引(该命令在大数据情况下特别影响性能)

     ⑤db.COLLECTION_NAME.totalIndexSize()         提供指定集合索引大小的报告信息

 

三、聚合

1、概念:

       ①聚合为集合文档数据提供各种处理数据方法,并返回计算结果。

       ②三种方式执行聚合命令:聚合管道方法、map-reduce方法(没第一种好,不用)、单一目标聚合方法

2、aggregate()方法(聚合管道方法)

   1)概念

       ①聚合管道方法(合计流水线法),就是把集合里若干含数值型的文档及,其键对应的值进行各种分类统计。

       ②该方法支持分片集合操作。

   2)语法

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

   3)示例   

      对"col"集合根据"year"字段进行分组,并将字段值存到_id上,统计结果存到"num"字段

  

group mongodb 排序 mongodb _id 排序_字段_03

     类似于:select year,count(*) from col  group by year

  

   4)一些聚合表达式

表达式

描述

示例

$sum

计算总和

db.col.aggregate([{$group:{_id:”$year”,sum:{$sum:1}}}])

$avg

计算平均值

db.col.aggregate([{$group:{_id:”$year”,avg_year:{$avg:”$year”}}}])

$min

获取集合中所有文档对应值的最小值

db.col.aggregate([{$group:{_id:”$year”,min_year:{$min:”$year”}}}])

$max

获取集合中所有文档对应值的最大值

db.col.aggregate([{$group:{_id:”$year”,max_year:{$max:”$year”}}}])

$push

在结果文档中插入值到一个数组中

db.col.aggregate([{$group:{_id:”$year”,result:{$push:”year”}}}])

$addToSet

在结果文档中插入值到一个数组中,但不创建副本。

db.col.aggregate([{$group:{_id:”$year”,result:{$addToSet:”$name”}}}])

$first

根据资源文档的排序获取第一个文档数据

db.col.aggregate([{$group:{_id:”$year”,first_name:{$first:”$name”}}}])

$last

根据资源文档的排序获取最后一个文档数据

db.col.aggregate([{$group:{_id:”$year”,last_name:{$last:”$name”}}}])

   5)管道(MongoDB的聚合管道)-----------------处理文档的

      (1)定义:一个管道处理完毕后将结果传递给下一个管道处理,管道操作可重复。

      (2)表达式:处理输入文档并输出。

      (3)常用的操作符:

操作符

说明

$project

修改输入文档的结果。(可重命名、增加或删除域、创建计算结果和嵌套文档)。

$match

用于过滤数据,只输出符合条件的文档,该操作为标准查询操作。

$limit

限制MongoDB聚合管道返回的文档数。

$skip

在聚合管道中,跳过指定数量的文档,并返回余下的文档。

$unwind

将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。

$group

将集合中的文档分组,可用于统计结果。

$sort

将输入文档排序后输出

$geoNear

输出接近某一地理位置的有序文档

        (4)示例

              ①使用$project,只显示name和year字段。

                

group mongodb 排序 mongodb _id 排序_数据_04

              ②使用$match,用于获取year大于17小于或小于等于18记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理

                 

group mongodb 排序 mongodb _id 排序_NoSQL_05

              ③使用$skip,跳过前一个文档。

               

group mongodb 排序 mongodb _id 排序_字段_06

3、单一目标聚合方法

 1) db.COLLECTION_NAME.count()

   (1)语法

db.COLLECTION_NAME.count(query,options)

  (2)命令说明

             1、功能:统计集合里符合查询条件的文档数量。

             2、参数说明:

                           ①query:查询条件。

                           ②options:选项。

              option参数列表

名称

类型

说明

limit

Integer

限制要计数的文档的最大数量

Skip

Integer

计数前要跳过的文档数

Hint

String或document

对需要查询的索引进行提示或详细说明

maxTimeMS

Integer

设置允许查询运行的最长时间

ReadConcern

String

指定读取关注(默认local)

指定majority级别时,必须要满足以下三个天剑

  1. 必须先启动Mongod实例。
  2. 多用与副本集数据库的读关注。
  3. 使用该级别时,必须指定非空的查询条件。

  (2)示例

         1、统计符合条件的记录数(年龄大于15的人数)

          

group mongodb 排序 mongodb _id 排序_数据_07

2)db.COLLECTION_NAME.distinct()

    (1)语法

         db.COLLECTION_NAME.distinct(<key>,query,option)

    (2)命令说明

          1、功能:统计集合里指定键的不同值,并返回结果。

           2、参数说明:

                         ①<key>:一个键名。

                         ②query:集合查询条件。

                         ③option:collations选项。

       (3)示例

         1、统计集合中_id的的不同值,并且返回。

       

group mongodb 排序 mongodb _id 排序_group mongodb 排序_08