mongo 查询汇总
mongo 查询汇总
- 字符串拼接:
- 字符串拼接(某一字段没有或者为空时,会导致拼接串为空,所以需要判空):
- 判空(如果第一个表达式为空,则赋值为第二个表达式值;否则赋值第一个表达式值):
- 日期格式化为字符串:
- 日期转为时间戳:
- 条件语句
- 分组 group (group 单字段/多字段)
- 字符串截取
- map_reduce
字符串拼接:
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()
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
