正文开始前,首先需要表名几条定义:

聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组、过滤等功能,然后经过一系列的处理,输出相应的结果

语法:db.集合名称.aggregate({管道:{表达式}})

$project是常用的管道命令之一:修改输⼊⽂档的结构,如重命名、增加、删除字段、创建计算结果

$push是常用的表达式之一:在结果⽂档中插⼊值到⼀个数组中,数据透视

接下来用这个集合作为事例来分析二者的区别:

> db.car.find()
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30f8"), "carname" : "大众", "color" : "red", "price" : 120 }
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30f9"), "carname" : "奔弛", "color" : "bule", "price" : 400000 }
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30fa"), "carname" : "宝马", "color" : "green", "price" : 300000 }
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30fb"), "carname" : "奔弛", "color" : "red", "price" : 600000 }
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30fc"), "carname" : "大众", "color" : "yellow", "price" : 100 }
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30fd"), "carname" : "大众", "color" : "yellow", "price" : 120 }

$project:

db.car.aggregate(
{$project:{_id:0,carname:1}}
)

//_id字段默认为1是显示状态,不需显示用0表示,   其他字段默认为不显示

显示效果为:

$push:

db.car.aggregate(
{$group:{_id:null,name:{$push:'$carname'}}}
)

//_id:null 表示不指定分组的字段

显示效果为:

MongoDB--$project和$push的区别的更多相关文章

  1. Django中的Project和App的区别

    Django是一个非常流行的用python编写的Web框架,在使用Django之前,我们需要了解一些基本的概念,这样可以在使用Django的时候对其有一个更加深入的把握.本文主要介绍Django中两个 ...

  2. Android 培训准备资料之project与module的区别(1)

    project和module的区别? 现在我们来看看在Android studio中怎样新建一个project (1)file->new->new project. Application ...

  3. install-软件安装跟push的区别

    今天在做项目的时候,需要往一个user版本的手机中安装一个应用,就在网上查了相应的方法,可以使用如下命令 adb install -r out/target/product/vanzo6752_lwt ...

  4. Android中Project、Module的区别

    Project 可以包含多含 Module. Project相当于eclipse里面的工作区间,module相当于其project.module可以作为狭义上的模块,可以多个app共用的module. ...

  5. 微信小程序中concat 和push的区别

    push和concat二者功能很相像,但有两点区别. 先看如下例子: var arr = []; arr.push(1); arr.push(2); arr.push([3, 4]) arr.push ...

  6. Svn 的 Update 与Maven 的update project 作用有什么区别

    1.svn update只是更新项目的SVN仓库.2.maven update project则是进行一系列的操作(跟自己的配置有关,可能包含一下操作):更新SVN.更新项目关联.编译项目.构建发布等 ...

  7. javascript 中concat与push的区别

    1. push 遇到数组参数时,把整个数组参数作为一个元素:而 concat 则是拆开数组参数,一个元素一个元素地加进去. 2. push 直接改变当前数组:concat 不改变当前数组. 总结:如果 ...

  8. git<Commit和Push的区别>

    git作为支持分布式版本管理的工具,它管理的库(repository)分为本地库.远程库. git commit操作的是本地库,git push操作的是远程库. git commit是将本地修改过的文 ...

  9. Git------Commit和Push的区别

    转载:http://wenda.so.com/q/1435946424728324?src=140 git作为支持分布式版本管理的工具,它管理的库(repository)分为本地库.远程库. git ...

随机推荐

  1. iOS FMDB的是使用和注意事项

    1.FMDB 默认的使用方法不是线程安全的. 2.Sqlite 默认不支持外键. 3.Sqlite 不支持用 ALTER 关键字给已有表添加外键约束 解决: 1.FMDBDatabaseQueue 2 ...

  2. 单调性 [1 + 1 / (n)]^n

    def f(n): n += 0.0 s = 1 + 1 / (n) r = pow(s, n) print(n, ',', r) return r l = []for i in range(1, 1 ...

  3. 内存不够怎么办? 1.5.1 关于隔离 1.5.2 分段(Segmention) 1.5.3 分页(Paging)

    小结: 1. 内存不够怎么办?1.5.1 关于隔离1.5.2 分段(Segmention)1.5.3 分页(Paging) <程序员的自我修养——链接.装载与库>

  4. 《HTTP - http报文》

    还时推荐一首歌 - 那吾克热<纸飞机> 有没有突然想要个孩子的冲动,哈哈. 读 第三章<HTTP报文内的HTTP信息> 总结 1:用于HTTP协议交互叫做HTTP报文,请求端( ...

  5. Python接口自动化【requests处理Token请求】

    首先说一下使用python模拟登录或注册时,对于带token的页面怎么登录注册模拟的思路: 1.对于带token的页面,需要先从最开始的页面获取合法token 2.然后使用获取到的合法token进行后 ...

  6. python基础数据类型考试题

    Python基础数据类型考试题 考试时间:两个半小时                      满分100分(80分以上包含80分及格) 一,基础题. 1,简述变量命名规范(3分) 2,字节和位的关系 ...

  7. MyEclipse下创建的项目 导入eclipse

    1.导入在MyEclipse下创建的项目 2.把项目变成Web项目,在项目上右键-->Properties-->选择Project Facets-->点击Convert to fac ...

  8. SQL专家云监控

    SQL专家云监控:http://www.zhuancloud.com/Index.html

  9. MongoDB pymongo模块 插入数据

    insert_one(): 对一张不存在表插入数据,他会在插入数据同时自动生成数据表, 例如我要对chat集合插入数据,插入一个空数据 import pymongo mongo_client = py ...

  10. 卸载postgresql数据库

    卸载postgresql数据库有两种方法,第一种一个个包卸载,第二种全部卸载.做这些之前请先做好备份,以防意外! 1.1.查询出postgres数据库,用命令rpm -qa |grep postgre ...