MongoDB 管道的介绍及操作符实例

MongoDB 管道的介绍及操作符实例

一 介绍

管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。

表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。

这里我们介绍一下聚合框架中常用的几个操作:

  1. $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
  2. $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
  3. $limit:用来限制MongoDB聚合管道返回的文档数。
  4. $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
  5. $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
  6. $group:将集合中的文档分组,可用于统计结果。
  7. $sort:将输入文档排序后输出。
  8. $geoNear:输出接近某一地理位置的有序文档。

二 管道操作符实例

1、$project实例

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

这样的话结果中就只还有_id,tilte和author三个字段了,默认情况下_id字段是被包含的,如果要想不包含_id话可以这样:

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

2.$match实例

db.articles.aggregate( [
            { $match : { score : { $gt : 70, $lte : 90 } } },
            { $group: { _id: null, count: { $sum: 1 } } }
            ] );

$match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。

3.$skip实例

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

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

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Ubuntu16.04手动安装MongoDB的详细教程

    我最近在研究MongoDB的路上,那么今天也算个学习笔记吧!今天用Ubuntu16.04手动安装MongoDB,分享给大家 注意事项: 仔细按步骤阅读操作 注意别写错字 牢记上面两点 一.用自带的火狐浏览器下载Ubuntu 16.04 Linux 64-bit x64 1.地址:http://www.mongodb.org/downloads 2.选择linux选项卡,再在下拉框中选中Ubuntu 16.04 Linux 64-bit x64 3.点击Download按钮(浏览器弹出的下载单选框

  • 基于MongoDB数据库索引构建情况全面分析

    前面的话 本文将详细介绍MongoDB数据库索引构建情况分析 概述 创建索引可以加快索引相关的查询,但是会增加磁盘空间的消耗,降低写入性能.这时,就需要评判当前索引的构建情况是否合理.有4种方法可以使用 1.mongostat工具 2.profile集合介绍 3.日志 4.explain分析 mongostat mongostat是mongodb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取mongodb的当前运行状态,并输出.如果发现数据库突然变慢或者有其他问题的话,首先就要考虑采用

  • Mongodb实现的关联表查询功能【population方法】

    本文实例讲述了Mongodb实现的关联表查询功能.分享给大家供大家参考,具体如下: Population MongoDB是非关联数据库.但是有时候我们还是想引用其它的文档.这就是population的用武之地. Population是从其它文档替换文档中的特定路径.我们可以迁移一个单一的文件,多个文件,普通对象,多个普通的对象,或从查询中返回的所有对象 populate 方法 populate 方法可以用在 document 上. model 上或者是 query 对象上,这意味着你几乎可以在任

  • Mongodb实战之全文搜索功能

    前言 众所周知在传统的关系型数据库中,我们通常将数据结构化,通过一系列表关联.聚合来查询我们所需的结果.而在非结构化的数据中,缺少这种预定义的结构,因而如何快速查询定位到我们所需要的结果,不是一件容易的事. Mongodb作为一种NoSQL数据库,非常适合存储和管理非结构化数据,例如互联网上的各种文本数据.假如我们用Mongodb存储了很多博客文章,那么如何快速找到所有关于"nodejs"这个主题的文章呢?Mongodb内建的全文搜索可以帮助我们完成这个功能.下面话不多说了,来一起看看

  • Windows下MongoDb简单配置教程

    如何在Windows下对MongoDb进行简单的配置,本文为大家解答. 以管理员的启动cmd 进入安装目录下 输入:mongod --auth --port 3406 --dbpath=库地址 --logpath= 全地址 --install --serviceName "自定义名称" 注:库地址可只指定到文件夹,LOG地址需指定到具体文件 --auth 启用权根控制 --port 指定端口 --ip 指定IP不指定则为本地 -- serviceName windows服务名称 上述完

  • 基于MongoDB数据库的数据类型和$type操作符详解

    前面的话 本文将详细介绍MongoDB数据库的数据类型和$type操作符 类型 数字 备注 Double 1 双精度浮点数 - 此类型用于存储浮点值 String 2 字符串 - 这是用于存储数据的最常用的数据类型.MongoDB中的字符串必须为UTF-8 Object 3 对象 - 此数据类型用于嵌入式文档 Array 4 数组 - 此类型用于将数组或列表或多个值存储到一个键中 Binary data 5 二进制数据 - 此数据类型用于存储二进制数据 Undefined 6 已废弃 Objec

  • 利用node.js+mongodb如何搭建一个简单登录注册的功能详解

    前言 最近突然对数据库和后台感兴趣了,就开始了漫长的学习之路,想想自己只是一个前端,只会java斯科瑞普,所以就开始看nodejs,看着看着突然发现mongodb和nodejs更配哦!,遂就开了我的mongodb之路.下面话不多说了,来一起看看详细的介绍吧. mongodb简介 就超简洁的说一下,mongo就是一个nosql的数据库,不使用sql的语法,当然其实也是大同小异的,增删改查还是差不多的,但是在概念上mongo还是跟mysql有相当大的区别的;比如在mongo中没有表的概念,而是一个集

  • mongodb的安装使用和pymongo基本使用教程

    (1) mongodb的安装 下载tgz解压后,需要添加相应的环境变量才能在终端直接启动mongod. mongodb数据存储在/data/db中,需要手动创建目录树,同时mongod执行的时候如果权限不够(不能往/data/db写东西),需要改一下权限. vim ~/.bashrc export PATH="~/download/mongodb-linux-x86_64-ubuntu/bin:$PATH" mkdir -p /data/db ls -l / 查看data目录的权限,发

  • MongoDB 管道的介绍及操作符实例

    MongoDB 管道的介绍及操作符实例 一 介绍 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数. MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理.管道操作是可以重复的. 表达式:处理输入文档并输出.表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档. 这里我们介绍一下聚合框架中常用的几个操作: $project:修改输入文档的结构.可以用来重命名.增加或删除域,也可以用于创建计算结果以及嵌套文档. $m

  • C#使用命名管道Pipe进行进程通信实例详解

    1.新建解决方案NamedPipeExample 新建两个项目:Client和Server,两者的输出类型均为"Windows 应用程序".整个程序的结构如下图所示. 此Form1为Client的窗体,如下图所示. 后端代码,如下. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using Syst

  • mongodb中oplog介绍和格式详析

    目录 1. 基本概念 2. Oplog 的默认储存大小 3. 可能需要更大oplog的工作负载 4. Oplog状态 5. Oplog格式 6. CUD操作和Oplog的对应关系 delete操作 update操作 小结 总结 1. 基本概念 oplog使用固定大小集合记录了数据库中所有修改操作的操作日志(新增.修改和删除,无查询),mongodb收到修改请求后,先在主节点(Primary)执行请求,再把操作日志保存到oplog表中,其他从节点(Secondary)到主节点拉取oplog并在异步

  • C#使用LINQ查询操作符实例代码(一)

    目录 相关阅读 示例业务背景介绍 一.筛选操作符 结果: 1.索引器筛选 2.类型筛选OfType 二.投影操作符 1.Select 子句 结果: 相应的lambda表达式: 2.复合的From子句 三.let子句 四.排序操作符 使用ThenBy() 和 ThenByDescending() 方法继续排序进行二次排序 五.分组操作符 1.对嵌套的对象分组 2.多字段分组 3.分组后再每组里面仅取满足条件的行 相关阅读 C#使用LINQ查询操作符实例代码(一) C#使用LINQ查询操作符实例代码

  • java 中mongodb的各种操作查询的实例详解

    java 中mongodb的各种操作查询的实例详解 一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is  精确匹配,模糊匹配 使用regex...) public PageUrl getByUrl(String url) { return findOne(new Query(Criteria.where("url").is(url)),PageUrl.class); } 2. 查询多条数据:linkUrl.id 属于分级查询 public Lis

  • struts2入门介绍及代码实例

    Struts2的控制器是一个过滤器,Struts中的Action就相当于在基本MVC设计模式当中一个个独立的servlet,并由Action调用模型层(JavaBean)完成一个个具体的业务功能. 在struts2中创建一个例子 新建WEB工程,然后在工程上右键选择Myeclipse–>addstrutsCapabilities,界面中选择struts2,然后点击finish,结束后你会在src文件下面看到struts的配置文件struts.xml. 然后就是在web.xml文件中配置过滤器,配

  • jenkins插件pipeline集成持续交付管道全面介绍

    目录 前言 Jenkinspipeline是什么? 为什么使用pipeline? enkinsfile支持脚本式ScriptedPipeline和声明式DeclarativePipeline ScriptedPipeline 声明式DeclarativePipeline 使用Jenkinsfile的好处: 关于BlueOcean 前言 前篇博文我们实践了jenkins pipeline的脚本模式,体验到了pipeline的流式构建流程,以及通过bule  ocean更清晰的展示了构建的全过程,下

  • MongoDB中的bson介绍和使用实例

    一.什么是bson BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型. BSON可以做为网络数据交换的一种存储形式,这个有点类似于Google的Protocol Buffer,但是BSON是一种schema-less的存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想,BSON有三个特点:轻量性.可遍历性.高效性, {"hello&q

  • 纯Python开发的nosql数据库CodernityDB介绍和使用实例

    看看这个logo,有些像python的小蛇吧 .这次介绍的数据库codernityDB是纯python开发的. 先前用了下tinyDB这个本地数据库,也在一个api服务中用了下,一开始觉得速度有些不给力,结果一看实现的方式,真是太鸟了,居然就是json的存储,连个二进制压缩都没有.  这里介绍的CodernityDB 也是纯开发的一个小数据库. CodernityDB是开源的,纯Python语言(没有第三方依赖),快速,多平台的NoSQL型数据库.它有可选项支持HTTP服务版本(Codernit

  • Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】

    本文实例讲述了Python列表list操作符.分享给大家供大家参考,具体如下: #coding=utf8 ''''' 列表也可以使用比较操作符,比较时更加ASCII进行比较的. 比较列表时也用内建函数cmp()函数: 两个列表的元素分别比较,直到有一方胜出. 元组进行比较操作时和列表遵循相同的逻辑. 列表的切片操作和字符串的切片操作很像, 不过列表的切片操作返回的是一个对象或者几个对象的集合. 列表的切片操作也遵循从正负索引规则,也有开始索引值,结束索引值, 如果这两个值为空,默认为序列的开始和

随机推荐