MongoDB $type 操作符

类型 数字 备注
Double 1
String 2
Object 3
Array 4
Binary data 5
Undefined 6 已废弃
Object id 7
Boolean 8
Date 9
Null 10
Regular Expression 11
JavaScript 13
Symbol 14
JavaScript(with scope) 15
32-bit Integer 16
Timestamp 17
64-bit Integer 18
Min key 255 Query with -1
Max key 127

实例:

获取title为String的数据

>db.col.find({"title": {$type : 2)}});

MongoDB Limit与Skip方法

MongoDB Limit()方法

limit()方法接受一个数字参数,意为从数据记录中读取指定个数的记录条数。

语法

>db.col.find().limit(NUMBER);

MongoDB Skip()方法

skip()方法可以用来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

Tips:

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

    • 第一个{}放where条件,为空表示返回集合中所有文档。
    • 第二个{}指定哪些列显示和不显示(0表示不显示1表示显示)
  2. 想要读取从10条记录后的100条记录,相当于sql中limit(10,100)
    • db.col.find().skip(10).limit(100)
    • skip和limit结合就能实现分页
  3. 当查询时同时使用sort,skip,limit, 无论位置先后,最先执行顺序为先sort再skip再limit。

MongoDB排序

MongoDB sort()方法

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

语法:

>db.col.find().sort({KEY:1});

For Instance

>db.col.find({}, {"title":1, _id:0}.sort({"likes": -1});

上述是选取所有的记录,只显示title,并且按照likes的大小降序排列。

MongoDB 索引

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

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

ensureIndex()方法

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

语法:

>db.col.ensureIndex({KEY:1});

上述语法中KEY值为你要创建的索引字段,1为指定按升序创建索引,-1为指定降序来创建索引。

For Instance

>db.col.ensureIndex({"title":1});

同时,ensureIndex()方法中你也可以设置使用多个字段创建索引。(关系型数据库中称为复合索引)

>db.col.ensureIndex({"title":1, "description": -1});

ensureIndex()接受可选参数,可选参数列表如下:

参数 类型 描述
background Boolean 建索引过程会阻塞其他数据库操作,background可指定以后台方式创建索引,即增加"background"可选参数。"background"默认值为false
unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false
name String 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排列顺序生成一个索引名称
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

For Instance

在后台创建索引:

>db.col.ensureIndex({ open: 1, close: 1}, {background: true});

MongoDB聚合

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

aggregate()方法

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

语法:

>db.col.aggregate(AGGREGATE_OPERATION);

通过一个官方文档中的图片来讲解该函数

图片来自:https://docs.mongodb.com/manual/aggregation/

下表展示了一些聚合表达式

表达式 描述
$sum 计算总和
$avg 计算平均值
$min 获取集合中所有文档对应值的最小值
$max 获取集合中所有文档对应值的最大值
$push 在结果文档中插入值到一个数组中
$addToSet 在结果文档中插入值到一个数组中,但不能创建副本
$first 根据资源文档的排序获取第一个文档数据
$last 根据资源文档的排序获取最后一个文档数据

管道Pipeline

和Unix、Linux中类似,一般用于将当前命令的输出结果作为下一个命令的参数。

MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。并且管道的操作可以重复的。

几种常用的方法:

  • $project:修改输入文档结构。可用重命名、删除或增加域。
  • $match:用于过滤数据。上面图片中有具体实例
  • $limit:用来限制返回的数量。
  • $skip:跳过指定文档数量
  • $group:将集合中的文档分组,可用于统计结果
  • $sort:将输入文档排序后输出。
>db.article.aggregate(
{ $project: {
title: 1,
author : 1,
}
}
);

通过上述修改,结果中就只有_id,title和author三个字段了。默认情况下_id字段是被包含的。如果不包含可以使用下述代码

>db.article.aggregate(
{ $project : {
_id : 0,
title: 1,
author: 1
}
}
);

skip实例

>db.article.aggregate(
{ $skip: 5}
);

经过$skip管道操作符处理后,前五个文档会被"过滤"掉。

MongoDB学习之路(五)的更多相关文章

  1. MongoDB学习笔记(五)--复制集 && sharding分片

    主从复制                                                                                       主从节点开启 主节 ...

  2. mongodb学习之路1

    第一节 MongoDB介绍及下载与安装 引言 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似 json的b ...

  3. MongoDB 学习笔记(五):固定集合、GridFS文件系统与服务器端脚本

    一.count.distinct与group 1.count函数:查询文档数,如下图: 2.distinct:去重,用法:db.runCommand({distinct:"集合名" ...

  4. redis——学习之路五(简单的C#使用redis)

    redis官方推荐使用的客户端程序 打星星表示推荐使用的客户端程序,一个笑脸表示最近6个月内有过正式活动的.http://redis.io/clients/#c 从这里我们可以判断官方推荐我们使用Se ...

  5. zigbee学习之路(五):定时器1(查询方式)

    一.前言 今天,我们来学习几乎所有单片机都有的功能,定时器的使用,定时器对单片机来说是相当重要的,有了它,单片机就可以进行一些复杂的工作. 二.原理与分析 谈到定时器的控制,我们最先想到的是要给它赋初 ...

  6. MongoDB学习之路(四)

    MongoDB插入文档 MongoDB使用insert()或save()方法向集合中插入文档. db.COLLECTION_NAME.insert(document); For instance &g ...

  7. MongoDB学习之路(三)

    数据库 一个MongoDB可以建立多个数据库. MongoDB的默认数据库为"db",该数据库存储在data目录中. MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自 ...

  8. MongoDB学习之路(二)

    MongDB特点 MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器的性能. MongoDB旨在为WEB应用提供可拓展的高 ...

  9. MongoDB学习之路(一)

    NoSQL简介 NoSQL(Not Only SQL),意为"不仅仅是SQL" 关系型数据库遵循ACID规则 1. A(Atomicity)原子性 指的是事务里的所有操作要么全部做 ...

随机推荐

  1. python--DenyHttp项目(2)--ACM监考客户端测试版☞需求分析

    写脚本之前,先写个需求分析 以后会多写一些脚本,会注意这方面的 禁止HTTP请求☞需求分析 核心功能: 通过修改Hosts文件,禁止用户访问百度等搜索引擎 实现方法: 通过CMD控制台命令COPY覆盖 ...

  2. 点击文字选中radio

    <html><body><form action="" name="form1" method="post"& ...

  3. js实时获取input数据

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 关于ftp出现425错误

    在centos上搭建一个ftp,一切都配置好之后,我去访问时仍然会出现425 Failed to establish connection.这个错误,经过一番查找,原来是这个 -A INPUT -j ...

  5. python机器学习实战(四)

    python机器学习实战(三) 版权声明:本文为博主原创文章,转载请指明转载地址 www.cnblogs.com/fydeblog/p/7364317.html 前言 这篇notebook是关于机器学 ...

  6. 关于C#的学习心得体会

    1·多看多写 多看网上成熟的demo,养成一个良好的代码编写习惯,将终生受益 2·多编多敲 看了代码,理解demo中的思路,灵活运用到自己的代码中,这样不仅了解了别人的代码,同时还了解了代码的执行过程 ...

  7. 011.Adding Search to an ASP.NET Core MVC app --【给程序添加搜索功能】

    Adding Search to an ASP.NET Core MVC app 给程序添加搜索功能 2017-3-7 7 分钟阅读时长 作者 本文内容 1.Adding Search by genr ...

  8. go环境的安装~

    Golang环境搭建 Golang github地址:https://github.com/golang/go Golang的环境下载:https://golang.org/dl/ 安装过程就是nex ...

  9. Node.js之操作文件系统(一)

    Node.js之操作文件系统(一) 1. 同步方法与异步方法 在Node.js中,使用fs模块来实现所有有关文件及目录的创建.写入及删除操作.,在fs模块中,所有对文件及目录的操作都可以使用同步与异步 ...

  10. Pyspark的HBaseConverters详解

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/7449682.html 转载请注明出处 最近在折腾pyspark的HbaseConverters,由于资料 ...