1.count 计数
查询persons中美国学生的人数
db.persons.find({country:"USA"}).count()
2.distinct 去重
查询出persons中一共有多少个国家,分别是什么
db.runCommand({distinct:"persons",key:"country"}).values //这里的values为数组的键 如:values:[China,USA]
3.group 分组
语法:
db.runCommand({group:{
ns:集合名字,
key:分组的键对象,
initial:初始化累加器,
$reduce:组分解器,
condition,条件,
finalize:组完成器
}})
//分组首先会按照key进行分组,每组的每一个文档全要执行$reduce的方法,它接收2个参数,一个是组内本条记录,一个是累加数据
例:请查出persons中每个国家学生数学成绩最好的学生信息(必须在90分以上) //思路:按国家分组,然后查询每组中最好的,然后在取出成绩在90分以上的学生
db.runCommand({group:{
ns:"persons",
key:{"country":true},
initial:{m:0},
$reduce:function(doc,prev) {
if(doc.m > prev.m) {
prev.m = doc.m;
prev.name = doc.name;
prev.country = doc.country;
}
},
condition:{m:{$gt:90}}
}})
使用完成器对以上查出来的结果进行描述显示
db.runCommand({group:{
ns:"persons",
key:{"country":true},
initial:{m:0},
$reduce:function(doc,prev) {
if(doc.m > prev.m) {
prev.m = doc.m;
prev.name = doc.name;
prev.country = doc.country;
}
},
condition:{m:{$gt:90}},
finalize:function(prev) {
prev.m = prev.name + "Math scores" + prev.n
}
}})
4.用函数格式化分组的键
如果在集合中出现键country和counTry同时存在,分组又如何解决呢?
用下面这种方式替换上面的key
$keyf:function(doc) {
return {coutry:doc.counTry}
}
命令执行器runCommand
5.用命令执行一次删除集合的操作
db.runCommand({drop:"map"})
常用shell命令
6.查询服务器版本号和主机操作系统
db.runCommand({buildInfo:1})
7.查询执行命令的集合的详细信息,大小,空间,索引等
db.runCommand({collStats:"persons"})
8.查询操作本集合最后一次错误信息
db.runCommand({getLastError:"persons"})
MongoDB_09之计数去重分组等
最新推荐文章于 2023-01-04 15:15:55 发布