mongodb

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下的所有数据: 查看输出数据条数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。