F2e踩坑之路WEB前端程序开发让前端飞

Mongodb的用法以及安装

2017-12-18  本文已影响226人  tomzhangto

MongoDB

一. MongoDB 介绍:

MongoDB是一个跨平台,面向文档的数据库,高性能,高可用性和易于扩展。

二、三个概念

三、为什么选择 MongoDB?

四、官网链接:

五、安装:

★ win 安装: ( 推荐下载安装 )
★ mac 安装 : ( 推荐在线安装 )
  1. 安装: home brew
    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  2. 测试 brew 安装是否成功:

    brew -v
    
  3. 更新 brew

    brew update
    
  4. 安装 MongoDB

    brew install mongodb --with-openssl
    
  5. 检查:

    mongo --version
    
    //显示如下代表成功:
    MongoDB shell version v3.4.7
    ......
    

六、 启动、连接 mongodb 服务器: ( Win版 )

win-mongodb 使用

mac-mongodb 使用

(一)、启动数据库 服务器:
  1. 创建目录 c:\data\db\

    - 如果使用这个路径 `c:\data\db\\`,就可以直接使用第二步,
     
    -  else 
    - 在启动的时候,可以通过 --dbpath 指定数据服务存储数据的目录  // 目录可以通知点击地址栏获取
    - mongod --dbpath D:\mongo-data
    
    -  如果不加--dbpath, mongod 会自动使用 `执行命令所属磁盘根目录`下面的/data/db 目录作为自己的数据存储路径,
    
  2. 在命令行输入 mongod 启动服务 (注意 : 不是 mongodb 也不是 mongo)

    > mongod                             // mac 下 要使用 sudo mongod 
    // 如果出现瞎买这句话才算 OK    
    > ....  waiting for connections on port 27017
    
  3. **[ 切记 ] **停止服务:按 ctr + c,不要直接通过关闭 cmd 窗口的方式来关闭

    • 任务管理器 关闭进程
    • 找到 mongod.lock 删掉
(二)、连接数据库 服务器:
  1. 再打开一个 cmd 窗口
  2. 通过 mongo 命令连接数据库服务器
  3. mongo 命令默认去连接本机上的 MongoDB 服务实例:127.0.0.1:27017
  4. 也可以通过下面的命令,指定连接的主机名和端口号:
mongo --host 127.0.0.1 --port 27017
(三)、操作数据库 服务器: {见基本操作命令}

七、 开启、连接 mongodb 服务器: ( Mac 版)

win-mongodb 使用

mac-mongodb 使用

(一)、启动数据库 服务器:

​ (三)、操作数据库 服务器: {见基本操作命令}

总结:
  1. 开启数据库服务器: mongod / sudo mongod
  2. 连接....................: mongo
  3. 关闭....................: Ctr+C

八、基本操作命令

九、Node.js 操作 MongoDB — 使用 MongoDB 驱动器

这个mongodb 是 MongoDB 驱动器 (driver) ,帮助 nodejs 来操作 mongo 数据库的,虽然名字一样,但是实质不一样

  1. Quick Start 参考文档:

  2. 安装:

    npm init -y   //初始化包配置文件
    npm i mongodb -SD   //安装
    
  3. 前提:开启数据库服务器 : 终端开启MongoDB 服务器 : 执行:mongod / mongod -dbpath 新路径

    • 如果是 mac 记得加 sudo: sudo mongod
    • 检查是否操作成功: 可以打开 mongo 查看
  4. CRUD [增删改查]

十、 CRUD (增删改查)

  1. 连接数据库服务器:

    //1. 加载 mongodb
    var mongodb = require('mongodb')
    
    //2. 获取一个连接数据库的对象 MongoClient 
    var  MongoClient = mongodb.MongoClient;
    
    //3. 连接字符换   连接到数据库进程 数据db01里
    // var url = 'http://127.0.0.1....'
    var url = 'mongodb://127.0.0.1:27017/db01'
    
    //4. 开始连接
    /// [注意]一定要注意,终端开启数据库服务器 sudo mongod
    MongoClient.connect(url,function (err,db) {
      
      if (err) {
        throw err
      }
      console.log('连接上了数据库');
    
      //5. 一定要关闭
      db.close()
    })
    

  2. 插入单条数据

    • 使用方法: **db . collection(XX) . insertOne ( { 数据 } , callback(err,result) ) **
  //1. 插入单条数据
  // [注意1] 插入数据是异步的  所以要有个回调函数
  // [注意2] insert() 在 3.2版本之后,已经慢慢被废弃,插入单条的话
  //        使用 insetOne()
  db.collection('heros').insertOne({name:'星哥',age:18}, function(err,doc){

    if (err) {
      throw err
    }
    console.log(doc)
   //{ result: { ok: 1, n: 1 },
   // ops: [ { name: '星哥', age: 18, _id: 59fd23fd2ae663070b66a4f7 } ],
   // insertedCount: 1,
   // insertedIds: [ 59fd23fd2ae663070b66a4f7 ] }

     //[注意] 取值之后,一定要记得关闭数据库
     db.close()
  })

  1. 插入多条数据

    • 使用方法 : insertMany ( [ { 数据1 } , { 数据2 }] , callback(err,result) )
      //2. 插入多条数据
      // [注意] 插入数据是异步的
      // 所以要有个回调函数
      db.collection('heros').insertMany([
        {name:'虎哥',age:80},
        {name:'达达',age:18},
        {name:'香香',age:19},
      ], function(err,doc){
    
        if (err) {
          throw err
        }
        console.log(doc)
        // { result: { ok: 1, n: 3 },
        // ops:
        //  [ { name: '虎哥', age: 80, _id: 59fd24e2b28af807465884cc },
        //    { name: '达达', age: 18, _id: 59fd24e2b28af807465884cd },
        //    { name: '香香', age: 19, _id: 59fd24e2b28af807465884ce } ],
        // insertedCount: 3,
        // insertedIds:
        //  [ 59fd24e2b28af807465884cc,
        //    59fd24e2b28af807465884cd,
        //    59fd24e2b28af807465884ce ] }
         //[注意] 取值之后,一定要记得关闭数据库
         db.close()
      })
    

  2. 查询全部数据

    • 使用方法 : find ( { 条件 } ) . toArray ( callback(err,docs) ) : 条件可有可无
    • 打印的 doc: 是一个数组, (查询首页列表适合用)
    //5. 获取数据
      db.collection('heros').find().toArray(function (err,doc) {
       
        if (err) {
          throw err
        }
    
        // [查询多条的区别]
        // 1. find().toArray(callback)
        // 2. doc 是一个数据集合
        console.log(doc)
    
        db.close()
      })
    })
    

  3. 查询单条数据

    • 使用方法 : findOne( {条件} , callback(err,doc) )
    • doc 打印的是一个 对象 : (查询某个详情页适合用)
    //5.查询单条数据
      db.collection('heros').findOne({age:16},function (err,doc) {
        if (err) {
          throw err
        }
        console.log(doc)
        // 打印的是一个对象
        //{ _id: 59fd259fc83c80e709dff4dc, name: '老宫', age: 16 }
    
         // 异步里关闭数据库
         db.close()
      })
    

  4. 更新数据

    • 使用方法: updateOne ( {条件} , { $set: {更新字段 }} , callback )

    • 更新多条: updateMany

    • 如果只跟新一条是用$ set, 如果工作中的编辑页面是要获取所有的信息都要更新一遍的

      所以,直接写对象即可,不用$ set 了

    //5. 更新数据
      // update(参数1,参数2,回调)
      db.collection('heros').updateOne({age:16},{$set:{name:'丹丹'}},function (err,doc) {
        if (err) {
          throw err
        }
    
        console.log(doc)
    
        console.log('ok')
      
        db.close()
      })
    

  5. 删除数据

    • 删除单条: deleteOne ( {条件} , callback )
    • 删除多条: deleteMany ( {条件} , callback )
      //6.删除 
      //删除多条 deleteMany()
      db.collection('heros').deleteOne({age:16},function (err,doc) {
        if (err) {
          throw err
        }
        
        console.log('删除成功')
    
        //6. 关闭数据库
        db.close();
      })
    
上一篇下一篇

猜你喜欢

热点阅读