mongo学习- 聚合project操作
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操作的更多相关文章
- mongo学习使用记录2 spring data
spring data mongo 打印mongo NoSql语句 log4j.properties log4j.rootLogger=INFO, stdout log4j.logger.org.sp ...
- 与你一起学习MS Project——理论篇:项目管理与Project
Hi,你好!我是大黄蜂,非常高兴借此机会与你一起学习微软Project的相关知识和技能.这一次的分享主要是结合本人在实际使用Project 2013过程中的一些方法技巧,其中有一些材料则来源于互联网, ...
- Hbase深入学习(六) Java操作HBase
Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...
- mongo学习整理
mongo做为NOSQL家族中一员,被广泛使用以及应用到生产环境中,有其出色的性能.关系型数据库(RDBMS )在互联网中依然是不可替代的一部分,mongo基于NOSQL的特性,在程序中RDBMS不适 ...
- PHP学习之-数据库操作
PHP学习之-数据库操作 1.PHP支持那些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Sybase,Db2,Or ...
- [Python] Python 学习 - 可视化数据操作(一)
Python 学习 - 可视化数据操作(一) GitHub:https://github.com/liqingwen2015/my_data_view 目录 折线图 散点图 随机漫步 骰子点数概率 文 ...
- python入门学习:3.操作列表
python入门学习:3.操作列表 关键点:列表 3.1 遍历整个列表3.2 创建数值列表3.3 使用列表3.4 元组 3.1 遍历整个列表 循环这种概念很重要,因为它是计算机自动完成重复工作的常 ...
- torch Tensor学习:切片操作
torch Tensor学习:切片操作 torch Tensor Slice 一直使用的是matlab处理矩阵,想从matlab转到lua+torch上,然而在matrix处理上遇到了好多类型不匹配问 ...
- Javascript学习笔记二——操作DOM
Javascript学习笔记 DOM操作: 一.GetElementById() ID在HTML是唯一的,getElementById()可以定位唯一的一个DOM节点 二.querySelector( ...
随机推荐
- printk()函数学习笔记
参考: https://www.cnblogs.com/sky-heaven/p/6742062.html韦东山老师的printk讲解:https://blog.csdn.net/W110710131 ...
- jmap打dump异常
背景 用jmap打dump文件经常遇到如下异常,打不出来,哥今天告拆大家一个终极解决方法,嘘,不要告拆别人.. Attaching to core -F from executable 421442, ...
- 纯php实现中秋博饼游戏(2):掷骰子并输出结果
这篇是纯php实现中秋博饼游戏系列博文(2) 上文是:纯php实现中秋博饼游戏(1):绘制骰子图案 http://www.cnblogs.com/zqifa/p/php-dice-1.html要纯ph ...
- 10件在PHP7中不要做的事情
10件在PHP7中不要做的事情 1. 不要使用mysql_函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数.PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mys ...
- QT4.8.5环境移植到嵌入式平台
QT4.8.5环境移植到嵌入式平台 参考:Qt移植到ARM Linux教程 http://www.veryarm.com/930.html 清除配置: sudo make confclean 配置: ...
- linux中bin与sbin目录的作用及区别介绍
linux中bin与sbin目录的作用及区别介绍 本文介绍下,linux中的二个主要目录:bin与sbin,它们的作用与区别,学习linux的朋友可以参考下 在linux系统中,有两个重要的目录:bi ...
- springboot 有关拦截器遇到的问题
最近改造搜索服务,原来是用 ngx + lua 写的,虽然性能很高,带来的问题是可维护性不太方便,不是指lua语言方面,是因为团队就2个开发人员,另外一个开发人员的擅长语言是Java,于是准备将搜索服 ...
- 让多个Fragment 切换时不重新实例化
转自:http://www.yrom.net/blog/2013/03/10/fragment-switch-not-restart/ 让多个Fragment 切换时不重新实例化 在项目中需要进行Fr ...
- bzoj2505: tickets
Description 有一位售票员给乘客售票,对于每位乘客,他会卖出多张连续的票,直到已卖出的编号的所有位置上的数的和不小于给定的正数k.然后他会按照相同的规则给下一位乘客售票.初 ...
- 关于Android App开发知识体系的一个小总结
前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的知识体系进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 ...