1.Count+Distinct+Group
1.1 count
db.orderInfo.find({"totalAmount":100}).count();
1.2 distinct
db.runCommand({distinct:"orderInfo" , key:"totalAmount"}).values
//结果如下
/* 1 */
[
null,
100.0,
200.0
]
1.3 group
1.3.1 语法
db.runCommand({group:{
ns:集合名字,
Key:分组的键对象,
Initial:初始化累加器,
$reduce:组分解器,
Condition:条件,
Finalize:组完成器
}})
分组首先会按照key进行分组,每组的 每一个文档全要执行$reduce的方法,
他接收2个参数一个是组内本条记录,一个是累加器数据.
1.3.2 案例
查出persons中每个国家学生数学成绩最好的学生信息(必须在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}}
}})
1.3.2
在上一个基础上把没个人的信息链接起来写一个描述赋值到m上
finalize:function(prev){
prev.m = prev.name+” Math scores “+prev.m
}
2.数据库命令操作
2.1 runCommand
//删除数据库
db.runCommand({drop:"map"})
{
"nIndexesWas" : 2,
"msg" : "indexes dropped for collection",
"ns" : "foobar.map",
"ok" : 1
}
2.2 服务器常用命令
2.2.1 查询服务器版本号和主机操作系统
db.runCommand({buildInfo:1})
2.2.2 查询执行集合的详细信息,大小,空间,索引等……
db.runCommand({collStats:”persons”})
2.2.3 查看操作本集合最后一次错误信息
db.runCommand({getLastError:”persons”})
3.固定集合特性
3.1 概念
Cappend collection是性能出色的有着固定大小的集合,以LUR(Least Recently Used最近最少使用)规则
和插入顺序进行age-out(老化移出)处理,自动维护集合中对象的插入顺序,在创建时要预先指定大小,
如果空间用完,新添加的对象将会取代集合最旧的对像,永远保持最新的数据
3.2 固定特性
- 固定集合默认是没有索引的就算是_id也是没有索引的
- 由于不需分配新的空间他的插入速度是非常快的
- 固定集合的顺是确定的导致查询速度是非常快的
- 最适合的是应用就是日志管理
3.3 创建固定集合
3.3.1 创建一个新的固定集合要求大小是100个字节,可以存储文档10个
db.createCollection("mycoll",{size:100,capped:true,max:10})
3.3.2 把一个普通集合转换成固定集合
db.runCommand({convertToCapped:”persons”,size:100000})
3.4 反向排序,默认是插入顺序排序.
3.4.1查询固定集合mycoll并且反响排序
db.mycoll.find().sort({$natural:-1})
3.5 尾部游标,可惜shell不支持java和php等驱动是支持的
3.5.1尾部游标概念
这是个特殊的只能用到固定级和身上的游标,他在没有结果的时候
也不回自动销毁他是一直等待结果的到来
4.GridFS文件系统
4.1.\ 概念
GridFS是mongoDB自带的文件系统他用二进制的形式存储文件
大型文件系统的绝大多是特性GridFS全可以完成
4.2 利用的工具
mongofiles
4.3 .使用GridFS
4.3.1 查看GridFS的所有功能
cmdmongofiles
4.3.2 上传一个文件
mongofiles -d foobar -l "E:\filename.txt" put "filename.txt“
4.3.3 查看GridFS的文件存储状态
- 利用工具查看
- 集合查看
db.fs.chunks.find() 和db.fs.files.find() 存储了文件系统的所有文件信息
4.3.4查看文件内容
C:\Users\mongodb\bin\mongofiles -d foobar get "filename.txt“
工具可以查看,shell无法打开文件
4.3.5查看所有文件
mongofiles -d foobar list
4.3.5删除已经存在的文件VUE中操作
mongofiles -d foobar delete 'filename.txt'
5.服务器端脚本
5.1.Eval
- 服务器端运行eval
db.eval(“function(name){ return name}”,”uspcat”)
5.2.Javascript的存储
5.2.1在服务上保存js变量活着函数共全局调用
- 把变量加载到特殊集合system.js中
db.system.js.insert({_id:name,value:”uspcat”}) - 调用
db.eval(“return name;”)
System.js相当于Oracle中的存储过程,因为value不单单可以写变量
还可以写函数体也就是javascript代码