MongoDB管道操作符(一)

1表示要该字段,0表示不要该字段,也可以对返回的字段进行重命名,比如将title改为articleTitle,如下:

db.sang_collect.aggregate({KaTeX parse error: Expected '}', got 'EOF' at end of input: …articleTitle":"title"}})

不过这里有一个问题需要注意,如果原字段上有索引,重命名之后的字段上就没有索引了,因此最好在重命名之前使用索引。

数学表达式

数学表达式可以用来对一组数值进行加减乘除取模,比如我的数据结构如下:

{

“_id” : ObjectId(“59f841f5b998d8acc7d08863”),

“orderAddressL” : “ShenZhen”,

“prodMoney” : 45.0,

“freight” : 13.0,

“discounts” : 3.0,

“orderDate” : ISODate(“2017-10-31T09:27:17.342Z”),

“prods” : [

“可乐”,

“奶茶”

]

}

订单的总费用为商品费用加上运费,查询如下:

db.sang_collect.aggregate({KaTeX parse error: Expected '}', got 'EOF' at end of input: …t:{totalMoney:{add:[“ p r o d M o n e y " , " prodMoney"," prodMoney","freight”]}}})

实际付款的费用是总费用减去折扣,如下:

db.sang_collect.aggregate({KaTeX parse error: Expected '}', got 'EOF' at end of input: …ect:{totalPay:{subtract:[{ a d d : [ " add:[" add:["prodMoney",“KaTeX parse error: Expected 'EOF', got '}' at position 10: freight"]}̲,"discounts”]}}})

再来三个无厘头运算,比如计算prodMoney和freight和discounts的乘积:

db.sang_collect.aggregate({KaTeX parse error: Expected '}', got 'EOF' at end of input: …roject:{test1:{multiply:[“ p r o d M o n e y " , " prodMoney"," prodMoney","freight”,“$discounts”]}}})

再比如求 prodMoney和 p r o d M o n e y 和 prodMoney和freight的商,如下:

db.sang_collect.aggregate({KaTeX parse error: Expected '}', got 'EOF' at end of input: …roject:{test1:{divide:[“ p r o d M o n e y " , " prodMoney"," prodMoney","freight”]}}})

再比如用 freight对 f r e i g h t 对 freight对prodMoney取模,如下:

db.sang_collect.aggregate({KaTeX parse error: Expected '}', got 'EOF' at end of input: …roject:{test1:{mod:[“ p r o d M o n e y " , " prodMoney"," prodMoney","freight”]}}})

加法和乘法都可以接收多个参数,其余的都接收两个参数。

日期表达式

日期表达式可以从一个日期类型中提取出年、月、日、星期、时、分、秒等信息,如下:

db.sang_collect.aggregate({KaTeX parse error: Expected '}', got 'EOF' at end of input: project:{"年份":{year:"KaTeX parse error: Expected 'EOF', got '}' at position 11: orderDate"}̲,"月份":{month:"KaTeX parse error: Expected 'EOF', got '}' at position 11: orderDate"}̲,"一年中第几周":{week:"KaTeX parse error: Expected 'EOF', got '}' at position 11: orderDate"}̲,"日期":{dayOfMonth:"KaTeX parse error: Expected 'EOF', got '}' at position 11: orderDate"}̲,"星期":{dayOfWeek:"KaTeX parse error: Expected 'EOF', got '}' at position 11: orderDate"}̲,"一年中第几天":{dayOfYear:"KaTeX parse error: Expected 'EOF', got '}' at position 11: orderDate"}̲,"时":{hour:“KaTeX parse error: Expected 'EOF', got '}' at position 11: orderDate"}̲,"分":{minute:“KaTeX parse error: Expected 'EOF', got '}' at position 11: orderDate"}̲,"秒":{second:“KaTeX parse error: Expected 'EOF', got '}' at position 11: orderDate"}̲,"毫秒":{millisecond:“KaTeX parse error: Expected 'EOF', got '}' at position 11: orderDate"}̲,"自定义格式化时间":{dateToString:{format:”%Y年%m月%d %H:%M:%S”,date:”$orderDate”}}}})

执行结果如下:

{

“_id” : ObjectId(“59f841f5b998d8acc7d08861”),

“年份” : 2017,

“月份” : 10,

“一年中第几周” : 44,

“日期” : 31,

“星期” : 3,

“一年中第几天” : 304,

“时” : 9,

“分” : 27,

“秒” : 17,

“毫秒” : 342,

“自定义格式化时间” : “2017年10月31 09:27:17”

}

dayOfWeek返回的是星期,1表示星期天,7表示星期六, d a y O f W e e k 返 回 的 是 星 期 , 1 表 示 星 期 天 , 7 表 示 星 期 六 , dayOfWeek返回的是星期,1表示星期天,7表示星期六,week表示本周是本年的第几周,从0开始计。$dateToString是MongoDB3.0+中的功能。格式化的字符还有以下几种:

| 字符 | 含义 | 取值范围 |

| :-- | :-- | :-- |

| %Y | Year (4 digits, zero padded) | 0000-9999 |

| %m | Month (2 digits, zero padded) | 01-12 |

| %d | Day of Month (2 digits, zero padded) | 01-31 |

| %H | Hour (2 digits, zero padded, 24-hour clock) | 00-23 |

| %M | Minute (2 digits, zero padded) | 00-59 |

| %S | Second (2 digits, zero padded) | 00-60 |

| %L | Millisecond (3 digits, zero padded) | 000-999 |

| %j | Day of year (3 digits, zero padded) | 001-366 |

| %w | Day of week (1-Sunday, 7-Saturday) | 1-7 |

| %U | Week of year (2 digits, zero padded) | 00-53 |

字符串表达式

字符串表达式中有字符串的截取、拼接、转大写、转小写等操作,比如我截取orderAddressL前两个字符返回,如下:

db.sang_collect.aggregate({KaTeX parse error: Expected '}', got 'EOF' at end of input: project:{addr:{substr:[“$orderAddressL”,0,2]}}})

再比如我将orderAddressL和orderDate拼接后返回:

db.sang_collect.aggregate({KaTeX parse error: Expected '}', got 'EOF' at end of input: project:{addr:{concat:[“KaTeX parse error: Expected '}', got 'EOF' at end of input: …rderAddressL",{dateToString:{format:”–%Y年%m月%d",date:“$orderDate”}}]}}})

结果如下:

{

“_id” : ObjectId(“59f841f5b998d8acc7d08861”),

“addr” : “NanJing–2017年10月31”

}

再比如我将orderAddressL全部转为小写返回:

db.sang_collect.aggregate({KaTeX parse error: Expected '}', got 'EOF' at end of input: project:{addr:{toLower:“$orderAddressL”}}})

再比如我将orderAddressL全部转为大写返回:

复习的面试资料

这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)

  • 第一部分:Java基础-中级-高级

image

  • 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)

image

  • 第三部分:性能调优(JVM+MySQL+Tomcat)

image

  • 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)

image

  • 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)

image

  • 第六部分:其他:并发编程+设计模式+数据结构与算法+网络

image

进阶学习笔记pdf

  • Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法

image

  • Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis

image

image

image

  • Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka)

image

image

image

  • Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)

image

image

找小编(vip1024c)领取
通讯(MQ/kafka)

[外链图片转存中…(img-XYrfTvtD-1721718460144)]

[外链图片转存中…(img-AZTfBx1Z-1721718460145)]

[外链图片转存中…(img-dGysnNZ0-1721718460145)]

  • Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)

[外链图片转存中…(img-Sp4yFPAm-1721718460145)]

[外链图片转存中…(img-nnlODk87-1721718460146)]

找小编(vip1024c)领取

  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值