zoukankan      html  css  js  c++  java
  • mongoDB的安装与使用

    介绍

    mongodb是一种非关系型的数据库,它采用的BSON()的语法,轻便,简单,高效。
    BSON是一种类JSON的对象,以二进制的形式存储,在存储的时候采用{“name”:“jack”,“age”:20}键值对的形式。
    

    安装

    1.安装下载的.msi文件 ,注意安装在纯英文的路径上,各种next,就完成了安装。
    2.配置环境变量,将mongodb的安装路径的bin目录添加到系统环境变量path中。(不配置环境变量就要在mongodb的安装路径的bin文件夹下打开cmd)
    3.手动建立数据仓库,注意是纯英文路径
    4.打开cmd面板,执行mongod --dbpath "c:/data/db" --storageEngine=mmapvq
    5.重新打开一个cmd命令窗口,执行mongo(4步骤打开的cmd不能关闭)
    
    再次运行:
    1.打开cmd执行mongod
    2.再打开一个cmd命令窗口运行mongo;
    
     再次运行的时候出现错误的解决方法:(执行其中的一个,情况一样执行不一样)
    1.mongo --repear
    2.mongo --dbpath "c:/data"
    3.mongo --auth --dbpath c:mongomongoDBmongodata --repear
    4.删除仓库根目录中的mongod.lock文件
    

    库的操作

    查看所有库:show dbs
    创建并进入库: use ku-name
    删除库: db.dropDatabase()  //要先进入要删除的库再删除。
    

    集合的操作

    注: 要先进入collection 再操作
    查看集合帮助: db.collection.help()
    查看集合: show collections
    集合重命名: db.collection.renameCollection()
    查看集合空间大小: db.collection.dataSize()
    查看集合总数据量: bd.collection.count()
    查看集合所在数据库:db.collection.getDB();
    删除集合:db.collection.drop()
    集合复制:db.collection.copyTo('copy-name')
    

    数据操作(增删改查)

    注:先进入collection再操作
    

    增加数据

    db.collection.insert({"name":"jack","age":18})
    {"name":"jack","age":18}:要增加的数据
    

    删除数据

    db.collection.remove({"name":"jack"})
    {"name":"jack"}:要删除数据的条件
    

    修改数据

    db.collection.update({"name":"jack"},{"age":20},{upsert:true},{multi:true})
    {"name":"jack"}:更新的条件
    {"age":20}: 要更新的内容
    {upsert:true}:如果不存在该数据,是否选择插入该数据。
    {multi:true} : 匹配多个 false时只匹配查找到的第一个
    上面方法的弊端: 会用要更新的内容替换更新条件所在的数据。
    
    $inc : 增加数字类型值的value
        db.collection.update({name:"jack"},{$inc:{age:10}})  
        // jack所在数据的age增加10
    $set: 设置key的value
        db.collection.update({name:"jack"},{$set:{name:"lisi"}}) 
        //将jack所在数据的name改为lisi,元数据中没有的key,可增加key:value
    $unset : 删除属性
        db.collection.update({name:"jack"},{$unset:{age: 18}},{multi:true})  
        //将所有jack所在数据的age属性删除
    $push: 往 数组中添加一个值
        db.collection.update({name:"jack"},{$push:{hobby:"lanqiu"}}) 
        //往hobby的value(数组)中添加lanqiu。
    $pushAll:往数组中添加多个值
        db.collection.update({name:"jack"},{$pushAll:{hobby:[lanqiu,zuqiu]}}) 
        //往hobby的value(数组)中添加lanqiu、zuqiu
    $addToSet:增加一个值到数组内,只有当这个值不在数组内才增加
        db.collection.update({name:"jack"},{$addToSet:{hobby:{$each:[lanqiu,zuqiu]}}})
    $pop:删除数组内的一个值
        db.collection.update({name:"jack"},{$pop:{hobby:1}}) //从hobby数组的末尾删除
        db.collection.update({name:"jack"},{$pop:{hobby:-1}}) //从hobby数组的开头删除
    $pull:从数组内删除一个等于value的值
        db.collection.update({name:"jack"},{$pull:{hobby:"lanqiu"}})
        //删除jack数据hobby属性值中的lanqiu
    $pullAll:从数组删除多个值
        db.collection.update({name:"jack"},{$pullAll:{hobby:['lanqiu','zuqiu']}})
        //删除jack数据hobby属性值中的lanqiu、zuqiu
    

    查询数据

    db.collection.find()
        //查找集合内所有的数据
    db.collection.find({'age':18})
        //查找集合内所有age为18的数据
    db.collection.find({"age":{$gt:18}})
        //查找集合内所有age大于18的数据
    db.collection.find({"age":{$lt:18}})
        //查找集合内所有age小于18的数据
    db.collection.find({"age":{$gte:18}})
        //查找集合内所有age大于等于18的数据
    db.collection.find({"age":{$lte:18}})
        //查找集合内所有age小于等于18的数据
    db.collection.find({"age":{$gt:18,$lte:30}})
        //查找集合内所有age大于18小于30的数据
    db.collection.find({"age":{$ne:30}})
        //查找集合内所有age不等于30的数据
    db.collection.find({'age':{$mod:[10,1]}})
        //取模运算,查找集合内所有age%10 =1 的数据
    db.collection.find({"age":{$nin:[1,2,3]}})
        //查找集合内所有age不属于[1,2,3]中的任何一个
    db.collection.find({"age":{$in:[1,2,3]}})
        //查找集合内所有age属于[1,2,3]中的任何一个
    db.collection.find({"hobby":{$size:1}})
        //查找集合内所有hobby的值为1个的数据
    db.collection.find({"age":{$exists:true|false}})
        //true 存在字段age,返回有age的数据,
        //false 不存在字段age,返回没有age的数据
    db.collection.find({"key":/^val.*val$/i})
        //查找集合内key的值符合正则表达式的数据
    db.collection.find({$or:[{a:1},{b:2}]})
        //查找集合内符合a=1或b=2的数据
    db.collection.find("age":18,$or:[{a:1},{b:2}])
        //查找集合内age=18,并且a=1或b=2的数据
    db.collection.find({"key":{$not:/^val.*val$/i}})
        //查找集合内key的值不符合正则表达式的数据
        $not: 以上查找,如果加上$not就会获得相反的结果
    db.collection.find().sort({"key1":-1,"key2":1})
        //将集合内的所有数据排序,1为升序,-1为降序
    db.collection.find().limit(10),skip(10)
        //分页  limit查询多少条  skip从第几条开始查
    

    索引

    索引的目的是为了提高查询的效率,但是索引也不是越多越好,有两面性。索引会影响插入数据的效率
    
    创建索引:(1代表升序  -1代表降序)
    db.collection.ensureIndex({"name":1,"des":-1})
    
    设置为唯一索引:
    db.collection.ensureIndex({"name":1},{unique:true})
    
    删除所有索引:
    db.collection.dropIndexes()
    
    删除指定的索引:
    db.collection.dropIndex({"name":1})
    

    聚合

    $sum:求和
        db.collection.aggregate([{$group:{_id:"$字段",sumKey:{$sum:1}}}])
        //$sum:1  相当于单位
    
    $avg:平均值
        db.collection.aggregate([{$group:{_id:"$sex",avg:{$avg:"$age"}}}])
    
    $min:获取集合中所有文档对应值的最小值
        db.collection.aggregate([{$group:{_id:"$sex",min:{$min:"$age"}}}])
    
    $max:获取集合中所有文档对应值的最大值
        db.collection.aggregate([{$group:{_id:"$sex",max:{$max:"$age"}}}])
    

    数据备份

    数据备份: mongodump -d dbname -o c:/data
        dbname: 要备份的数据库的名称
        c:/data:备份的数据库要放的地址
    数据恢复:mongorestore -d dbname c:data/test
        dbname:恢复数据库新建的名称
        c:data/test:要恢复数据库的地址
  • 相关阅读:
    324. Wiggle Sort II
    341. Flatten Nested List Iterator
    300. Longest Increasing Subsequence
    72. Edit Distance
    63. Unique Paths II
    221.Maximal Square
    House Robbers. 198 & 213
    [C++] 与比较有关的事情
    218.The Skyline Problem
    41. First Missing Positive
  • 原文地址:https://www.cnblogs.com/rainbow8590/p/7120611.html
Copyright © 2011-2022 走看看