数据库:
开启服务端servious mongod start
开启客户端 mongo
展示全部数据库 show dbs
展示现在使用的书数据库 db
使用某个数据库 use py3 -----不存在时就回指向,当输入数据时才会创建
删除数据库 db.dropDatabase()
集合:
创建集合:
db.createCollection(name,options)---name是集合的名称,options是集合的配置文件
db.createCollection('stu',{capped : ture, size : 10})----参数capped:默认为Flase(不指定上限),当为ture时,需指定size(上限大小,单位为字节)
删除集合:db.mane.drop()
数据:
特殊:object ID------文档id(自动维护)
插入数据:db.集合名称.insert(document)
更新数据:db.集合名称.update(
<query>,#----查询条件(where)
<update>,#-----修改为(set)
{multi:<boolean>}#----是否修改多个(默认一条数据,即使查询出多个也只修改第一个)
)
#$set-----未使用时全文档修改,使用时对对应键的值修改
保存 :db.集合.save(document)----_id存在(修改),不存在(创建)
例:db.stu.save{'_id':'5af03c5b773a9d098a73f54d','name':'yk'}
删除:db.集合.remove(
<query>
{
justone:<boolean>
})
justone -----true(1条)
------flase(默认多条)
查询******
db.集合.find({条件})
db.集合.findOne({条件})------只返回一个
db.集合.find().pretty()
比较运算符:
等于----默认判断。没有
小于-----$lt
小于或等于----$lte
大于-----$gt
大于或等于-----$gte
不等于------$ne
例:db.collection.find({count:{$lt:2}})
逻辑运算符:
逻辑与----默认
例 db.collection.find({},{})
逻辑或----$or:[]
例 db.collection.find({$or:[{},{},{}])
范围运算符:$in:[] $nin:[]-----包换两个极
例:db.collection.find({age:{$in:[]}})
正则:--- /正则/ 或 $regex
例:db.collection.find({name:/^黄/})
db.collection.find({name:{$regex:^黄}})
自定义查询:----$where:functiom()
例:db.collection.find({$where:function(){reture this.age>20}})---返回age大于20的document
limit----用于读取指定数量的文档
例:db.collection.find().limite(number)-----number表示读取document的条数
skip-----用于跳过指定数量的document
例:db.collection.find().skip(number)-----number表示跳过的document的条数
#limite和skip组合使用
投影:
db.collection.find({},{字段名称:1,字段名称:0,....})-----1(显示),0(不显示),_id(默认显示)
排序:-----sort()
db.collection.find().sort({字段1:1,.....})-----1:升,2:降
统计个数:----count()
db.collection.count({})-------括号里面添加条件
消除重复:--------distinct()
db.collection.distinct('去重字段',{条件})------也可以结合find()
高级操作:聚合----aggregate()-----类似MySQL中的sum() avg(),用于做统计
db.collection.aggregate([管道:{表达式}])
#管道---将当前结果的输出,作为下一个命令的输入
1:$group----分组
例:db.collection.aggregate([
{$group:---------分组
{
_id:'$gender',------#根据gender进行分组
counter:{$sun:1}-------求和,每一条数据代表一个1
}
}
])
#$$ROOT------代表将整个document添加到结果集中
#group by null ----- 将集合中的所有document分为一组
2:$match----过滤数据(与find()类似)
例:db.collection.aggregate([
{$match:{age:{$gt:20}}},
{$group:{_id:'$gender',counter:{$sum:1}}}
])#------先进行过滤(find),然后进行分组
3:$project-----投影
例:db.collection.aggregate([
{$group:{_id:'$gender',counter:{$sum:1}}},
{$project:{_id:0,counter:1}}
])
4:$sort----- 排序
例:db.collection.aggregate([{$sort:{age:1}}])
5:$skip------
6:$limit-----
#skip和limit有顺序
7:$unwind-----对某个字段的值进行拆分
1 数组[]
例 _id:556465674 name:'t-shirt' size:['S','M','L']
db.collection.aggregate([
{$unwind:'$size'}
])
_id:556465674 name:'t-shirt' size:'s'
_id:556465674 name:'t-shirt' size:'M'
_id:556465674 name:'t-shirt' size:'L'
2 处理空数组 非数组 无字段 null的情况
非数组:
size:'cdcad'------不拆分
空数组 无字段 null:
size:[]
无字段 加{path:'$size',preserveNullAndEmptyArrays:<ture>}---#防止数据丢失
size:null
索引:
db.collection.find().explain('executionStats')------显示查找时间(executionTimeMillis)
建立索引:db.collection.ensureIndex({属性:1})------1表示升序,-1表示降序
建立唯一索引:db.collection.ensureIndex({name:1},{'unique':true})
联合索引(按find()顺序,对多个属性建立索引):
db.collection.ensureIndex({name:1,age:1})
查看文档所有索引:db.collection.getIndexes()
删除索引:db.collection.dropIndexes('索引名称')
安全性:
常用系统角色:
root:超级权限---针对任意数据库
Read:允许读取指定数据库
readWrite:允许读写指定数据库
一: 创建超级管理员:use admin
db.creatUser({user:'admin',pwd:'190812',roles:[{role:'root',db:'admin'}]})
在 /etc/mongod.conf中修改:
security:
authorization: enabled
重启服务 service mongod restart
登陆:
mongo -u admin -p 190812 --authenticationDatabase admin
二:创建Read | readWrite 账户:
use py3
db.createUser({user:'py3',pwd:'123',roles:[{role:'readWrite',db:'py3'}]})
模式:db.createUser({user:'用户名',pwd:'密码',roles:[{roles:'权限',db:'数据库'}]})
复制(副本集):--------主要用于防止数据故障(无障机) 备份
1:所有写入数据都在主节点上进行
2:可以有n个从节点,负责复制主节点上的数据,从节点定期轮询主节点获取数据
3 在主节点挂掉之后,从节点成为主节点,保障用户可以访问数据
开启服务端servious mongod start
开启客户端 mongo
展示全部数据库 show dbs
展示现在使用的书数据库 db
使用某个数据库 use py3 -----不存在时就回指向,当输入数据时才会创建
删除数据库 db.dropDatabase()
集合:
创建集合:
db.createCollection(name,options)---name是集合的名称,options是集合的配置文件
db.createCollection('stu',{capped : ture, size : 10})----参数capped:默认为Flase(不指定上限),当为ture时,需指定size(上限大小,单位为字节)
删除集合:db.mane.drop()
数据:
特殊:object ID------文档id(自动维护)
插入数据:db.集合名称.insert(document)
更新数据:db.集合名称.update(
<query>,#----查询条件(where)
<update>,#-----修改为(set)
{multi:<boolean>}#----是否修改多个(默认一条数据,即使查询出多个也只修改第一个)
)
#$set-----未使用时全文档修改,使用时对对应键的值修改
保存 :db.集合.save(document)----_id存在(修改),不存在(创建)
例:db.stu.save{'_id':'5af03c5b773a9d098a73f54d','name':'yk'}
删除:db.集合.remove(
<query>
{
justone:<boolean>
})
justone -----true(1条)
------flase(默认多条)
查询******
db.集合.find({条件})
db.集合.findOne({条件})------只返回一个
db.集合.find().pretty()
比较运算符:
等于----默认判断。没有
小于-----$lt
小于或等于----$lte
大于-----$gt
大于或等于-----$gte
不等于------$ne
例:db.collection.find({count:{$lt:2}})
逻辑运算符:
逻辑与----默认
例 db.collection.find({},{})
逻辑或----$or:[]
例 db.collection.find({$or:[{},{},{}])
范围运算符:$in:[] $nin:[]-----包换两个极
例:db.collection.find({age:{$in:[]}})
正则:--- /正则/ 或 $regex
例:db.collection.find({name:/^黄/})
db.collection.find({name:{$regex:^黄}})
自定义查询:----$where:functiom()
例:db.collection.find({$where:function(){reture this.age>20}})---返回age大于20的document
limit----用于读取指定数量的文档
例:db.collection.find().limite(number)-----number表示读取document的条数
skip-----用于跳过指定数量的document
例:db.collection.find().skip(number)-----number表示跳过的document的条数
#limite和skip组合使用
投影:
db.collection.find({},{字段名称:1,字段名称:0,....})-----1(显示),0(不显示),_id(默认显示)
排序:-----sort()
db.collection.find().sort({字段1:1,.....})-----1:升,2:降
统计个数:----count()
db.collection.count({})-------括号里面添加条件
消除重复:--------distinct()
db.collection.distinct('去重字段',{条件})------也可以结合find()
高级操作:聚合----aggregate()-----类似MySQL中的sum() avg(),用于做统计
db.collection.aggregate([管道:{表达式}])
#管道---将当前结果的输出,作为下一个命令的输入
1:$group----分组
例:db.collection.aggregate([
{$group:---------分组
{
_id:'$gender',------#根据gender进行分组
counter:{$sun:1}-------求和,每一条数据代表一个1
}
}
])
#$$ROOT------代表将整个document添加到结果集中
#group by null ----- 将集合中的所有document分为一组
2:$match----过滤数据(与find()类似)
例:db.collection.aggregate([
{$match:{age:{$gt:20}}},
{$group:{_id:'$gender',counter:{$sum:1}}}
])#------先进行过滤(find),然后进行分组
3:$project-----投影
例:db.collection.aggregate([
{$group:{_id:'$gender',counter:{$sum:1}}},
{$project:{_id:0,counter:1}}
])
4:$sort----- 排序
例:db.collection.aggregate([{$sort:{age:1}}])
5:$skip------
6:$limit-----
#skip和limit有顺序
7:$unwind-----对某个字段的值进行拆分
1 数组[]
例 _id:556465674 name:'t-shirt' size:['S','M','L']
db.collection.aggregate([
{$unwind:'$size'}
])
_id:556465674 name:'t-shirt' size:'s'
_id:556465674 name:'t-shirt' size:'M'
_id:556465674 name:'t-shirt' size:'L'
2 处理空数组 非数组 无字段 null的情况
非数组:
size:'cdcad'------不拆分
空数组 无字段 null:
size:[]
无字段 加{path:'$size',preserveNullAndEmptyArrays:<ture>}---#防止数据丢失
size:null
索引:
db.collection.find().explain('executionStats')------显示查找时间(executionTimeMillis)
建立索引:db.collection.ensureIndex({属性:1})------1表示升序,-1表示降序
建立唯一索引:db.collection.ensureIndex({name:1},{'unique':true})
联合索引(按find()顺序,对多个属性建立索引):
db.collection.ensureIndex({name:1,age:1})
查看文档所有索引:db.collection.getIndexes()
删除索引:db.collection.dropIndexes('索引名称')
安全性:
常用系统角色:
root:超级权限---针对任意数据库
Read:允许读取指定数据库
readWrite:允许读写指定数据库
一: 创建超级管理员:use admin
db.creatUser({user:'admin',pwd:'190812',roles:[{role:'root',db:'admin'}]})
在 /etc/mongod.conf中修改:
security:
authorization: enabled
重启服务 service mongod restart
登陆:
mongo -u admin -p 190812 --authenticationDatabase admin
二:创建Read | readWrite 账户:
use py3
db.createUser({user:'py3',pwd:'123',roles:[{role:'readWrite',db:'py3'}]})
模式:db.createUser({user:'用户名',pwd:'密码',roles:[{roles:'权限',db:'数据库'}]})
复制(副本集):--------主要用于防止数据故障(无障机) 备份
1:所有写入数据都在主节点上进行
2:可以有n个从节点,负责复制主节点上的数据,从节点定期轮询主节点获取数据
3 在主节点挂掉之后,从节点成为主节点,保障用户可以访问数据