mongodb

数据库:
开启服务端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 在主节点挂掉之后,从节点成为主节点,保障用户可以访问数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值