美文网首页
mac安装mongoDB及配置

mac安装mongoDB及配置

作者: lmmy123 | 来源:发表于2019-07-31 20:01 被阅读0次

    使用homebrew安装

    brew install mongodb
    

    配置

    1.系统根目录下创建文件夹

    ~ sudo mkdir -p /data/db
    

    2.给data/db文件夹赋予权限

    ~ whoami
    apple
    ~ sudo chown apple /data/db
    

    3.添加环境变量(这里用的zsh终端,所以配置zsh文件)

    vim ~/.zshrc
    

    写入 export PATH=/usr/local/Cellar/mongodb/4.0.4_1/bin:${PATH}

    ~ source ~/.zshrc
    

    让其生效

    启动

    ~ mongod
    

    新建一个终端

    ~ mongod -version
    // db version v4.0.3
    
     ~ mongo
    // 进入数据库
    
    db.shutdownServer()
    // 退出
    

    操作命令

    查看数据库: show  dbs
    选择要操作的数据库:use DBNAME(数据库名字)
    查看集合:show collections
    查看集合里面的内容:db.COLLECTIONNAME(集合名字).find();
    查看当前操作的数据库:db    或者    db.getName()
    创建数据库:use 要创建的数据名
    数据的添加:db.COLLECTIONNAME(集合名字).insert({name:"张三",age:19})
    

    数据操作

    增加:db.COLLECTIONNAME.insert({name:"张三",age:19});
    
    sava添加操作
    db.COLLECTIONNAME.sava({name:"李四",age:18});
    
    sava更新操作
    db.COLLECTIONNAME.save({ "_id" : ObjectId("5a67e9b5abb73ea4bf24d0f0"), "name" : "张三2", "age" : 20 })
    
    删除:remove()
    db.COLLECTIONNAME.remove({name:"张三"},{配置项(可选)})
    
    注意:updata默认是只会更新符合条件的多条数据中的一条数据,remove默认配置是只会删除符合条件数据的所有数据
    
    
    // 数据查询
    db.COLLECTIONNAME.find({条件},{字段})
    eg: 查询数据库中大于30岁的人
    db.COLLECTIONNAME.find({age:{$gt:18}})
    
    条件查询

    大于 gt
    小于 lt
    大于等于 gte
    不等于 ne
    等于 :
    正则
    eg:

    db.COLLECTIONNAME.find({name:/^王/}) //查询所有以王 开头的name
    

    直接用逗号隔开

    db.COLLECTIONNAME.find({name:"张三", age:19})
    
    或 $or
    db.COLLECTIONNAME.find({$or:[{age: 19},{age:18}]})
    

    分页
    skip()
    限制条数
    limit()
    排序
    sort()
    汇总数
    count()

    MongoDB

    • 一个数据库对应多个集合

      • 一个集合对应多个文档对象
      • 在mongo中不论是db还是集合,你都无需去创建他
      • 直接就当他已经存在,直接Use来使用
        • use db名称;
          • 接着会被切换到该db中
          • db.要创建的集合名称.save({});这样集合就被创建了
    • 解决32位异常
      mongod --dbpath="路径" --journal --storageEngine=mmapv1

    • 1:启动服务器

      • mongod --dbpath "D:/mongodb/db" // 目录一定要存在自己创建随便名称‘
        • 尽量设置在非系统盘 C盘生成目录是需要权限的
      • 如果看到waiting for connections on port 27017说明服务已经启动
    • 客户端连接服务器另开一个命令行

      • mongo 默认连接的是test数据库
    • 查询有哪些数据库

      • 查询数据库:show dbs;
      • 切换数据库: use 数据库名;
    • 查询当前db下有哪些集合

      • show collections;
    • 查询数据:

      • db.集合名.find(); //查询出来的是文档对象 document
      • db.users.find();
    • 添加数据:

      • db.集合名.save(对象) //mongo默认会给我们加入_id作为该文档对象的唯一标识
      • db.users.save({contry:'中国',name:'小明',score:77});
    • 删除数据:

      • db.集合名.remove(条件对象);//条件匹配就会被删除
      • db.users.remove({name:'小明'});
      • 如果给定一个空对像,会匹配全部
    • 更新数据:

      • db.集合名.update({匹配条件对象},{$set:{修改后的对象}});
      • db.users.update({name:'小明'},{$set:{contry:'印度'}});;

    条件查询

    练习:
      查询姓名为小明的学生
            db.users.find({name:'小明'});;   查询英语成绩大于90分的同学
            db.users.find({score:{$gt:90}}); //查找成绩大于90分$gt
            //$lt小于
     查询数学成绩不等于88的同学
            db.users.find({score:{$ne:88}});   查询总分大于200分的所有同学
            db.users.find({score:{$gt:200}});
    

    分页

    • db.users.find().skip(3).limit(3);
    • db.集合名称.find().跳到3.显示3条
      + limit 0,3

    排序

    • db.users.find().sort({key:排序方式});
    • db.users.find().sort({'score':1}); //正数代表升序,负数代表降序

    模糊匹配

    • db.users.find({name:{$regex:'小'}});
    • db.users.find({name:{$regex:'明'}});

    聚合函数

    • 需要求当前集合的记录数:
    • db.users.find().count();
    • 求最大值
      -求整个集合的总成绩
      + db.集合名.聚合({ 组的划分规则{_id:'1',显示内容:{sum:'score'}} })
      • 求所有人的平均分
        • db.users.aggregate({$group:{_id:'1',sumscore:{$avg:'$score' } }});
      • 求按国家分组,求所有国家的总分
        • db.users.aggregate({$group:{_id:'$contry',sumScore:{$sum:'$score'}}});
    • 添加基础数据:
      db.users.save({contry:'中国',name:'小明',score:77});
      db.users.save({contry:'中国',name:'小红',score:88});
      db.users.save({contry:'中国',name:'小张',score:99});
      db.users.save({contry:'美国',name:'jack',score:45});
      db.users.save({contry:'美国',name:'rose',score:67});
      db.users.save({contry:'美国',name:'mick',score:89});

    联合查询

    db.orders.insert([
       { "_id" : 1, "item" : "almonds", "price" : 12, "quantity" : 2 },
       { "_id" : 2, "item" : "pecans", "price" : 20, "quantity" : 1 },
       { "_id" : 3  }
    ]);
    db.inventory.insert([
       { "_id" : 1, "sku" : "almonds", description: "product 1", "instock" : 120 },
       { "_id" : 2, "sku" : "bread", description: "product 2", "instock" : 80 },
       { "_id" : 3, "sku" : "cashews", description: "product 3", "instock" : 60 },
       { "_id" : 4, "sku" : "pecans", description: "product 4", "instock" : 70 },
       { "_id" : 5, "sku": null, description: "Incomplete" },
       { "_id" : 6 }
    ]);
    db.orders.aggregate([
       {
         $lookup:
           {
             from: "inventory",
             localField: "item",
             foreignField: "sku",
             as: "inventory_docs"
           }
      }
    ]);
    

    参考
    https://www.jianshu.com/p/83e892ea242d

    相关文章

      网友评论

          本文标题:mac安装mongoDB及配置

          本文链接:https://www.haomeiwen.com/subject/fukxdctx.html