mongo 查询汇总

字符串拼接:

code: {$concat: ["$str1", "  ", "$str2"]} 

字符串拼接(某一字段没有或者为空时,会导致拼接串为空,所以需要判空):

code: {$concat: [
    {$ifNull: [ "$str1", "" ]},
    "  ", 
    {$ifNull: [ "$str2", "" ]}
]} 

判空(如果第一个表达式为空,则赋值为第二个表达式值;否则赋值第一个表达式值):

{$ifNull: [ "$str1", "" ]}  

日期格式化为字符串:

createTime: {
    $dateToString: { 
        format: "%Y-%m-%d %H:%M:%S", 
        date: "$createTime" 
    }
} 

日期转为时间戳:

createTime: {
    $toString:{$toLong:"$createTime"}
}

条件语句

sex: {
    $cond: {
        if: { $eq: [ "$sex", "boy"] }, 
        then: "男", 
        else: "女" 
    }
}

// else 里可以再放 $cond,实现 if-else if-else。例如:
else: {
    $cond: {
        ...
    }
}

分组 group (group 单字段/多字段)

$sum、$avg、$min、$max

$push:在结果文档中插入值到一个数组中$addToSet:在结果文档中插入值到一个数组中,但不创建副本

$first:获取第一个文档数据

$last:获取最后一个文档数据

{
	$group: {
         // group 单字段  (按课程分组,累加成绩)
         // _id: "$course",
         // group 多字段 (按班级、课程分组,累加成绩)
         _id: {"classs": "$classs", "course": "$course"},
         score: {$sum: "$score"}
	}
}

字符串截取

substr{$substr: [ "$updateTime", 0, 10]}

map_reduce

按年龄统计数量:

db.collection.mapReduce( 
   function() { emit(this.age,1); }, 
   function(key, values) {return Array.sum(values)}, 
      {  
         query:{age: {"$exists": true}},  
         out:"collecction_out" 
      }
).find()

按年龄分组:

db.collection.mapReduce( 
   function() { emit(this.age, this.name); },   // map映射函数
   function(key, values) {   // reduce统计函数
   	  return {datas: values};
   }, 
   {  
      query:{age: {"$exists": true}},    // 查询collection集合中年龄存在的记录
      out:"collecction_out"   // 将mapReduce结果输出到collection_out集合
   }
).find()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值