mongodb中聚合project操作,必须和其他的聚合一起使用,它的作用有以下几个:

1.返回我们想要显示的的字段 {"$project":{"name":1}}

2.重命名字段 {"$project":{"name2":"$name"}}     $name为原字段,name2为要显示的字段名

注意:

(1)如果想将 _id 显示别的名字,必须将 _id隐藏,不然_id还会显示

(2)如果重命名之后,Mongodb不会记录字段的历史名称,因此该字段如果有索引的前提下,重命名的不会走索引,所以应该尽量在修改字段名称前使用索引。

3.数学表达式

求和: db.aaa.aggregate({"$match":{"_id":{"$gte":1}}},{"$project":{"sum":{"$add":["$_id","$money"]},"money":1}})

(1) $match 匹配条件

(2)sum 最后要显示的字段名称

(3)add 求和操作

(4)["$_id","$money"] 哪几个字段求和

求差值:db.aaa.aggregate({"$match":{"_id":{"$gte":1}}},{"$project":{"sum":{"$subtract":[{"$add":["$_id","$money"]},"$money"]},"money":1}}) 同上

乘积:db.aaa.aggregate({"$match":{"_id":{"$gte":1}}},{"$project":{"sum":{"$multiply":[1,2,3]}}})

除法:db.aaa.aggregate({"$match":{"_id":{"$gte":1}}},{"$project":{"sum":{"$divide":[2,1]}}})

余数:$mod

4.日期表达式 只能作用在日期格式的字段上

$year 年

$month 月

$week 星期

$dayOfWeek 一周的第几天

$dayOfMonth 一个月的第几天

$dayOfYear 一年的第几天

$hour 小时

$minute 分

$second 秒

5.字符串表达式

$substr 截取字符串,$concat 连接字符串,$toUpper/$toLower 大小写

6.逻辑表达式

$cmp:[e1,e2]   -1,0,1

$cond:[e1,r1,r2]  如果e1 是true,则返回r1,否则返回r2

$isNull:[e1,e2]  同上

db.aaaa.aggregate(
{"$match":{"name":{$exists:false}}},
{"$project":{name:1,monney:1,"abc":{"$cond":
{if:{"$gte":["$monney",150]},then:"本人",else:"其他人"}
}}})

db.aaaa.aggregate(
{"$match":{"name":{$exists:false}}},
{"$project":{"abc":{"name":{"$ifNull":[0,1]}}}})

mongo学习- 聚合project操作的更多相关文章

  1. mongo学习使用记录2 spring data

    spring data mongo 打印mongo NoSql语句 log4j.properties log4j.rootLogger=INFO, stdout log4j.logger.org.sp ...

  2. 与你一起学习MS Project——理论篇:项目管理与Project

    Hi,你好!我是大黄蜂,非常高兴借此机会与你一起学习微软Project的相关知识和技能.这一次的分享主要是结合本人在实际使用Project 2013过程中的一些方法技巧,其中有一些材料则来源于互联网, ...

  3. Hbase深入学习(六) Java操作HBase

    Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...

  4. mongo学习整理

    mongo做为NOSQL家族中一员,被广泛使用以及应用到生产环境中,有其出色的性能.关系型数据库(RDBMS )在互联网中依然是不可替代的一部分,mongo基于NOSQL的特性,在程序中RDBMS不适 ...

  5. PHP学习之-数据库操作

    PHP学习之-数据库操作 1.PHP支持那些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Sybase,Db2,Or ...

  6. [Python] Python 学习 - 可视化数据操作(一)

    Python 学习 - 可视化数据操作(一) GitHub:https://github.com/liqingwen2015/my_data_view 目录 折线图 散点图 随机漫步 骰子点数概率 文 ...

  7. python入门学习:3.操作列表

    python入门学习:3.操作列表 关键点:列表 3.1 遍历整个列表3.2 创建数值列表3.3 使用列表3.4 元组 3.1 遍历整个列表   循环这种概念很重要,因为它是计算机自动完成重复工作的常 ...

  8. torch Tensor学习:切片操作

    torch Tensor学习:切片操作 torch Tensor Slice 一直使用的是matlab处理矩阵,想从matlab转到lua+torch上,然而在matrix处理上遇到了好多类型不匹配问 ...

  9. Javascript学习笔记二——操作DOM

    Javascript学习笔记 DOM操作: 一.GetElementById() ID在HTML是唯一的,getElementById()可以定位唯一的一个DOM节点 二.querySelector( ...

随机推荐

  1. strapi 开源api && 内容管理平台试用

    strapi 是一个开源的api && 内容管理平台,功能操作起来还是比较方便简单的. 安装 使用docker && docker-compose 代码clone gi ...

  2. 转 HTTP.SYS 详解

    http.sys 是一个位于Win2003和WinXP SP2中的操作系统核心组件, 能够让任何应用程序通过它提供的接口,以http协议进行信息通讯. 温馨提示:如果用户不慎删除了该驱动文件,不用担心 ...

  3. 文档内容类似项处理-Shingling

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jituotianxia2009/article/details/25339807 集合的Jaccar ...

  4. linux pwd命令查看当前路径命令

    命令简介: 该命令用来显示目前所在的工作目录.指令英文原义:print work directory执行权限 :All User指令所在路径:/usr/bin/pwd 或 /bin/pwd 命令语法: ...

  5. MySQL分段统计SQL写法 与 Mybatis 异常 java.math.BigDecimal cannot be cast to java.lang.Integer

    mysql> select end) as '<60', end) as '60~69', end) as '70~79', end) as '80~89', end) as '>= ...

  6. 设置pip镜像源

    修改镜像源 vim ~/.pip/pip.conf windows 当前用户目录\pip\pip.ini 内容 [global] index-url=https://pypi.tuna.tsinghu ...

  7. vim自定义配置之代码折叠

    vimConfig/plugin/codeFold-setting.vim "--fold setting-- set foldmethod=syntax " 用语法高亮来定义折叠 ...

  8. 内存泄漏检测工具VLD在VS2010中的使用举例

    Visual LeakDetector(VLD)是一款用于Visual C++的免费的内存泄露检测工具.它的特点有:(1).它是免费开源的,采用LGPL协议:(2).它可以得到内存泄露点的调用堆栈,可 ...

  9. 五、jdk工具之jmap(java memory map)、 mat之四--结合mat对内存泄露的分析、jhat之二--结合jmap生成的dump结果在浏览器上展示

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  10. [原创][C#.Winform 控件]Krypton Suite comments

    命名空间:ComponentFactory.Krypton.Toolkit 最新版本:v4.4.0 官网状态:已停用 下载地址1:http://downloads.informer.com/krypt ...