mongodb

作者: 此人已失联好几天 | 来源:发表于2020-06-10 14:41 被阅读0次

    mongoDB下载地址:mongodb:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.6-signed.msi

    1. 找到安装目录下的bin目录,复制路径,添加到环境变量中

    2. 在非系统盘创建空mongoDB文件夹并创建空的日志文件夹以及创建空的数据库文件夹

    比如:  D:\mongoDB      ->  总数据库文件夹
           D:\mongoDB\db   ->  空数据库存储文件夹
           D:\mongoDB\log  ->  空日志文件夹
    
    1. mongod挂载成Windows上作为一个服务运行:此电脑 > 鼠标右键 > 管理 > 服务和应用程序 > 服务
        mongod                                      ->  mongod指令
        --dbpath="D:\mongoDB\db"                    ->  指定数据库存储路径
        --logpath="D:\mongoDB\log\mongodb.log"      ->  指定日志文件输出路径
        --install                                   ->  在windows上安装mongod服务
        --serviceName="MongoDB"                     ->  指定服务名称
        // 在CMD中运行下方指令
        // 64位操作系统命令:
            mongod --dbpath="D:\mongoDB\db" --logpath="D:\mongoDB\log\mongodb.log" --install --serviceName="MongoDB Server"
        // 32位操作系统或者安装mongodb Vue(可视数据库)时的命令:
        --storageEngine="mmapv1"                    ->  存储引擎必须使用mmapv1 单个集合最大数据数为2G (老的储存引擎)
            mongod --storageEngine="mmapv1" --dbpath="D:\mongoDB\db" --logpath="D:\mongoDB\log\mongodb.log" --install --serviceName="MongoDB Server"
    
    1. 开启/关闭服务: 在CMD中运行下方命令:重点
        net start mongodb   ->  开启服务
        net stop mongodb    ->  关闭服务
        sc delete xxx       ->  卸载服务(xxx可代表计算机中的任何服务名称)
    
    1. mongodb操作指令:重点
        mongo               ->  进入数据库管理模式
        exit                ->  退出数据库管理模式
    
    1. 数据库命令:重点

      1. 显示所有的数据库列表
        show dbs -> 查看其服务器中所有数据库
      2. 创建数据库,进入,切换数据库
        use xxx -> 如果该数据库存在则进入该数据库,如果不存在该数据库则创建该数据库
      3. 查看当前数据库
        db -> 查看当前所在数据库名称
      4. 删除数据库: 确保db当前指向在当前需要删除的数据库下
        db.dropDatabase()
    2. 集合命令:重点

      1. 显示当前数据库中的所有集合
        show collections
      2. 在数据库下创建一个集合并插入一条数据
        [user] -> 数据集合名(mysql中的表)
        db.user.insert(json)
      3. 删除集合
        [user] -> 数据集合名(mysql中的表)
        db.user.drop()
    3. 文档(数据的操作)命令:重点

      1. 新增数据
        [user] -> 数据集合名(mysql中的表)
        db.user.insert(json || bson) -> 推荐使用该方法
        例如:db.user.insert({ "key": "value" })

        1. 单条添加数据时
          db.user.insertOne({ "key": "value" }) -> 同上方添加方法
        2. 批量添加数据时
          db.user.insertMany([数组数据]) -> 推荐使用该方法
          例如:db.user.insertMany([ { key: value }, { key: value } ])
          db.user.save(json || bson)
          例如:db.user.save({ "key": "value" })
          // insert和save的区别:
          .insert :  单纯的向集合插入一条数据    ->  推荐使用该方法
          .save   :  向数据库中添加一条数据,如果该数据已存在则更新该条数据
          
      2. 查询数据
        [user] -> 数据集合名(mysql中的表)

        1. 查找当前集合中的所有数据
          db.user.find()
        2. 查找符合条件的所有数据
          db.user.find({ 条件 })
        3. 查找符合条件的第一条数据: 不常用
          db.user.findOne({ 查询条件 })
        4. 格式化查询出来的数据: 适用于CMD窗口
          db.user.find().pretty()
      3. 修改数据

        [user] -> 数据集合名(mysql中的表)

        db.user.update({ 查询数据的条件,如: id: 1 }, { 修改的数据,如: age: 55 })      -> 不加$set则修改整条数据
        查询id为1的这一条数据修改其age的值为55
        db.user.update({ 查询数据的条件,如: id: 1 }, { $set: { age: 999 } })        ->  加了$set, 则修改其中的部分数据
        

        修改数组
        查询id为1的这一条数据并向该数据中的news数组中添加一条新数据,如该数据存在则不添加,如数据不存在则添加 -> $push则直接添加并不会查找是否存在该元素
        db.user.update({ 查询数据的条件,如: id: 1 }, { $addToSet: { news: { title: '123465', detail: '123' } } }) -> $addToSet, 则表示向数组中添加数据
        统一给该集合中所有的文档添加某个参数:works
        db.user.bulkWrite([{ updateMany:{filter:{}, update:{ $set:{ works: [] } }, upsert:1} }])

      4. 删除数据
        db.user.remove({}) -> 删除当前集合中的所有数据
        db.user.remove({ 条件对象,如: age: 18 }) -> 删除当前集合中的指定的数据,删除当前集合下的所有age等于18的

    4. 文档查找高级命令
      [user] -> 数据集合名(mysql中的表)

      1. 查找指定数据
        db.user.find({ sex: '女' }) -> 查找user下的所有数据: 查找集合中为女性的用户
      2. 查找范围
        $lte        ->  小于等于
        $lt         ->  小于
        $gte        ->  大于等于
        $gt         ->  大于
        db.user.find({ age: { $lte: 24, $gte: 21 }, sex: '男' }).pretty()        ->  查找user下的所有数据: 年龄小于等于24岁大于等于21岁的男性用户
        
      3. 非 -> 很少用到,一般用a项
        db.user.find({ sex: { $ne: '男' } }).pretty() -> 查找user下的所有数据: 非男性用户
      4. 取模运算查找 -> 很少用到
        db.user.find({ age: { $mod: [2, 0] }}).pretty() -> 查找user下的所有数据: 年龄 age % 2 === 0 的用户(偶数)
      5. 枚举查找(批量:范围查找)
        db.user.find({ age: { $in: [18,20,21] }}).pretty()         ->  查找user下的所有数据: 年龄为18/20/21的所有用户
        非   ->  很少用到
        db.user.find({ age: { $nin: [18,20,21] }}).pretty()         ->  查找user下的所有数据: 年龄不为18/20/21的所有用户
        
      6. 查找数据下的某个属性,数组的个数
        db.user.find({ works: { $size: 0 } }) -> 查找user下的所有数据: works数组length为0的所有用户
      7. 查找数据下的某个属性是否存在
        db.user.find({ age: { $exists: true } }) -> 查找user下的所有数据: age属性存在的用户
      8. 多条件查询:或
        db.user.find({ $or: [{ age: 20 }, { sex: '男' }] }) -> 查找user下的所有数据: age=20或者sex=男 的所有符合其中一项条件的用户
      9. 模糊查询
        db.user.find({ name: /小/imxg }) -> 查找user下的所有数据: name中带有“小”字的所有数据
    5. 文档其他命令
      [user] -> 数据集合名(mysql中的表)

      1. 排序
        1               ->  升序排列
        -1              ->  降序排列
        db.user.find().sort({ fraction: -1, age: 1 })       ->  查找user下的所有数据: fraction降序排列并且age升序排列
        
      2. 限定输出多少条数据
        db.user.find().limit(3) -> 查找user下的所有数据: 限定输出3条数据
      3. 限定输出多少条数据
        可做分页
        db.user.find().limit(3).skip(3) -> 查找user下的所有数据: 限定输出3条数据并跳过前三条数据
      4. 查看输出数据条数
        db.user.find().count() -> 查找user下的所有数据: 查看输出数据条数

    相关文章

      网友评论

          本文标题:mongodb

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