准备数据
use test3
db.c1.insert({_id:1,name:"a",sex:1,age:1})
db.c1.insert({_id:2,name:"a",sex:1,age:2})
db.c1.insert({_id:3,name:"b",sex:2,age:3})
db.c1.insert({_id:4,name:"c",sex:2,age:4})
db.c1.insert({_id:5,name:"d",sex:2,age:5})
db.c1.find()
db.集合名.find().sort(JSON数据)
db.集合名.find().sort().skip(数字).limit(数字)
使用
.count()
可以统计数量
db.聚合名称.aggregate([
{管道:{表达式}}
....
])
常用管道 | 说明 |
---|---|
$group | 将集合中的文档分组,用于统计结果 |
$match | 过滤数据,只要输出符合条件的文档 |
$sort | 聚合数据进一步排序 |
$skip | 跳过指定文档数 |
$limit | 限制集合数据返回文档数 |
常用表达式 | 说明 |
---|---|
$sum | 总和 $sum:1同count表示统计 |
$avg | 平均 |
$min | 最小值 |
$max | 最大值 |
准备数据
use test4
db.c1.insert({_id:1,name:"a",sex:1,age:1})
db.c1.insert({_id:2,name:"a",sex:1,age:2})
db.c1.insert({_id:3,name:"b",sex:2,age:3})
db.c1.insert({_id:4,name:"c",sex:2,age:4})
db.c1.insert({_id:5,name:"d",sex:2,age:5})
_id
键表示按哪一个字段分组,需要显示的列新增字段即可。
创建索引
db.集合名.createIndex(带创建索引的列[,额外选项])
删除索引
查看索引语法
db.集合名.getIndexes()
数据准备
//选择数据库
use test5;
//向数据库中添加数据
for(var i=0;i<100000;i++){
db.c1.insert({'name':"aaa"+i,"age":i});
}
db.集合名.find().explain('executionStats')
COLLSCAN 全表扫描 IXSCAN 索引扫描 FETCH 根据索引去检索指定document
测试:age未添加索引情况 语法:db.c1.find({age:18}).explain(‘executionStats’);
测试:age添加索引情况 语法:db.c1.createIndex({age: 1}) 继续:db.c1.find({age:18}).explain(‘executionStats’)
db.createUser({
"user" : "账号",
"pwd": "密码",
"roles" : [{
role: "角色",
db: "所属数据库"
}]
})
角色种类 | 说明 |
---|---|
超级用户角色 | root |
数据库用户角色 | read、readWrite |
数据库管理角色 | dbAdmin、userAdmin |
集群管理角色 | clusterAdmin、clusterManager、clusterMonitor、hostManager |
备份恢复角色 | backup、restore |
所有数据库角色 | readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase |
角色 | 角色说明 |
---|---|
root | 只在admin数据库中可用。超级账号,超级权限; |
read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile; |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 |
userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
--auth
即可
mongod --install --dbpath F:\MongoDB\data --logpath F:\MongoDB\logs\mongoDB2.log --authdb.auth(用户名,密码)
准备数据
use shop;
for(var i=1; i<=10; i++) {
db.goods.insert({"name":"goodsName"+i,"price":i});
}
mongodump -h -port -u -p -d -o
F:\MongoDB\back
mongodump -u root -p root -o F:\MongoDB\backF:\MongoDB\back1
mongodump -u shop2 -p shop2 -d shop -o F:\MongoDB\back1因为数据库是属于shop1与shop2的,因此导出需要使用这两个账号。
mongorestore -h -port -u -p --drop -d
mongorestore -u root -p root --drop F:\MongoDB\back
对于可视化工具,我个人更喜欢Navicat