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]}}}})   

 

转载于:https://www.cnblogs.com/anxbb/p/9473035.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值