• nodeJS-05


     MongoDB简介

    • mongodb 官网
    • mongodb 中文
    • mongodb教程
    • MongoDB 是一个非关系型数据库,属于文档型数据库(NoSQL -> Not Only SQL)
    • 对 JavaScript 兼容较好,和 Node.js 结合最好
    • MEAN: M:mongodb E:express A:angular(vue react) n:nodejs

    mongodb安装

    windows版本

    参考地址:

    http://www.runoob.com/mongodb/mongodb-window-install.html

    • 1 根据操作系统选择合适的安装程序(32位或64位)
    • 2 直接安装程序
    • 3 配置环境变量,通过命令:mongod --version看是否安装成功
    • 4 注意:MongoDB最新版的安装包已经不再支持32位的windows操作系统了
    解决mongodb安装时出错 “mongodb 无法启动此程序,因为计算机中丢失 api-ms-win-crt-runtime-l1-1-0.dll”,安装 vc_redist.x64.exe
    
    https://helpx.adobe.com/tw/creative-cloud/kb/error_on_launch.html
    
    通过指定其他电脑的ip地址,就可以使用其他电脑中的MongoDB数据库了:
    var url = 'mongodb://localhost:27017'
    

    mac版本

    参考地址:http://www.runoob.com/mongodb/mongodb-osx-install.html

    mongodb启动与连接

    • 1 通过命令:mongod 启动 mongodb数据库服务(不要关闭)
    • 2 重新开启一个cmd,输入命令:mongo 就可以连接到mongod服务了
    1 在 C中创建 data文件夹, 在data文件夹中创建 db文件夹
    2 在终端中输入命令: mongod ,就可以启动mongodb数据库服务了
    
    3. 创建 c:datadb 的目的: 告诉 mongodb 数据存储到这个文件夹中, 但是, 只能在C盘中启动 mongod
    4. 如果需要在 D盘 启动, 需要在 D中也创建 data/db 目录
    
    
    # 终端1 -- 启动服务
    mongod
    
    # 终端2 -- 连接到服务
    # 此时,就可以在 终端 对数据库进行操作了
    mongo
    # 或者 指定ip
    mongo mongodb://localhost:27017
    

    数据库存储路径的说明

    • windows32位系统 安装MongoDB
    • 注意:mongod 会在执行命令的磁盘根目录中查找 data/db 目录作为数据库文件存储路径
    • 可以通过命令:mongod --dbpath 路径 修改默认配置
    # 64位:
    mongod --dbpath C:datadb
    
    # 32位:
    mongod  --journal --storageEngine=mmapv1
    mongod --dbpath c:datadb --journal --storageEngine=mmapv1
    

    MongoDB终端操作

    数据库操作

    以下的命令都是在mongo终端下完成

    • 查看数据库
    # 注意:自己创建的数据库,如果数据为空,不会显示
    show dbs
    
    • 切换(创建)数据库
    # 如果数据库存在,切换到该数据库, 如果数据库不存在,创建新的数据库
    # 如果数据库里面没有数据的话,数据库不显示
    use 数据库名
    use test
    use users
    
    • 查看当前使用的数据库
    # 查看当前正在使用的数据库
    db
    
    • 删除当前数据库
    db.dropDatabase()
    

    mongodb术语

    • 数据库:一个项目会使用一个数据库,比如letao, baixiu等
    • 集合:类似于表,一个数据库可以有很多集合,比如user存放学生信息,teacher存放老师的信息
    • 文档:一条数据就是一个文档,一个集合可以存放多条数据,即一个集合可以存放多个老师的信息,每个老师的信息称为一条文档
    • 字段:一条数据中的属性,就是字段,比如name,age等
    SQL术语/概念MongoDB术语/概念解释/说明
    database database 数据库
    table collection 数据库表/集合
    row document 数据记录行/文档
    column field 数据字段/域
    index index 索引
    table joins   表连接,MongoDB不支持
    primary key primary key 主键,MongoDB自动将_id字段设置为主键

    插入数据(文档)

    • 语法:db.集合名称.insert({})
    • 说明: 在 mongodb 中不需要提前创建"表", 直接通过 db.表名称.inseret() 就可以往表中添加数据了
    // 插入一条
    db.users.insert({name: 'jack', age: 18, gender: 'male'})
    
    // 插入多条
    db.users.insertMany([{name: 'tom', age: 19}, {name: 'jerry', age: 20}])
    

    查询数据

    • 语法:db.集合名称.find()
    // 查询所有数据
    db.users.find()
    
    // 美化输出格式:
    db.集合名称.find().pretty()
    
    // 指定条件查询:
    db.集合名称.find({name: 'jack'})
    

    修改数据

    • 语法:db.集合名称.updateOne(条件, 更新后的数据)
    // 修改name属性为jack的数据,将age改为20
    // 第一个参数: 表示要修改哪个数据, 会根据指定的name属性, 去查找值为jack的数据
    // 第二个参数: 表示修改修改后的数据, 会修改 age 属性的值为 20
    db.users.updateOne({name: 'jack'}, {$set: {age: 20}})
    
    // 修改age大于19岁的文档,将name设置为 中年人
    db.users.updateMany({age: {$gt: 19}},{$set: {name: '中年人'}})
    

    删除数据

    • 语法:db.集合名称.deleteOne(条件)
    // 删除 age 为18的数据:
    // 参数: 删除条件
    db.users.deleteOne({age: 18})
    
    // 删除所有name为jack的文档
    db.users.deleteMany({ name: 'jack' })
    

    MondoDB 查询语句

    操作格式示例SQL语句
    等于 {} db.col.find({ name :'jack'}) where name = 'jack'
    小于 $lt db.col.find({ age: {$lt:18}}) where age < 18
    小于或等于 $lte db.col.find({ age: {$lte:18}}) where age <= 18
    大于 $gt db.col.find({ age: {$gt:18}}) where age > 18
    大于或等于 $gte db.col.find({ age: {$gte:18}}) where age >= 18
    不等于 $ne db.col.find({ age: {$ne:18}}) where age != 18

    less than equal great not

    在 node 中操作 MongoDB

    • 安装:npm i mongodb
    // 导入 mongodb,并获取到客户端对象
    var MongoClient = require('mongodb').MongoClient
    
    // 连接数据库服务地址
    var url = 'mongodb://localhost:27017'
    
    // 连接数据库
    MongoClient.connect(url, function (err, client) {
      if (err) {
        return console.log('链接数据库失败', err)
      }
    
      console.log('数据库链接成功');
    
      // 获取集合对象
      var db = client.db('nodedb')
    
      // 关闭数据库链接
      client.close()
    })
    

    数据增删改查

    • 添加数据:
    var db = client.db('nodedb')
    
    // 添加
    db.collection('users')
      // 添加一条数据
      .insert({name: 'rose', age: 19}, function (err, data) {
        console.log(data);
      })
      // 添加多条数据
      .insertMany([{ name: 'tom', age: 20 }, { name: 'jerry', age: 21 }], function (err, data) {
        console.log(data);
      })
    
    • 查询数据:
    var db = client.db('nodedb')
    
    // 查询
    db.collection('users').find().toArray(function (err, data) {
      console.log(data)
    })
    
    • 删除数据:
    var db = client.db('nodedb')
    
    db.collection('users')
      // 删除一条数据:
      .deleteOne({name: 'rose'}, function (err, result) {
        console.log(result);
      })
      // 删除多条数据:
      .deleteMany({age: {$lt: 20}}, function (err, result) {
        console.log(result);
      })
    
    • 修改数据:
    var db = client.db('nodedb')
    
    db.collection('users')
      .update({ name: 'tom' }, { $set: { age: 22 } }, function (err, result) {
        console.log(result);
      })
    

    使用MongoDB实现 hacker-news

    在 node 中操作 MongoDB

    • 安装:npm i mongodb
    • 启动mongodb的服务
    // 导入 mongodb,并获取到客户端对象
    var MongoClient = require('mongodb').MongoClient
    
    // 连接数据库服务地址
    var url = 'mongodb://localhost:27017'
    
    // 连接数据库
    MongoClient.connect(url, function (err, client) {
      if (err) {
        return console.log('链接数据库失败', err)
      }
    
      console.log('数据库链接成功');
    
      // 获取集合对象
      var db = client.db('nodedb')
    
      // 关闭数据库链接
      client.close()
    })
    

    数据增删改查

    • 查询数据
    //查询
    db
        .collection("users")
        .find({age: {$gt:20}})
        .toArray(function(err, data){
        if(err) {
            return console.log("获取数据失败");
        }
        console.log(data);
    });
    
    
      db.collection("user").findOne({name:"小鲜肉"}, function(err, result){
        if(err) {
          console.log("查询单个数据失败了");
          return;
        }
        console.log(result);
      })
    
    • 添加数据:
    //添加单条
    db
        .collection("users")
        .insertOne({name:"jim1", age: 12, gender:"女"}, function(err, info){
        if(info.result.ok === 1){}
        console.log("数据插入成功");
    });
    
    //添加多条数据
    db
        .collection("users")
        .insertMany([ {"name":"hucc", "age":18, gender:"男"}, {"name":"hcc", "age":17, gender:"女"} ], function(err, info){
        console.log(info.result);
    });
    
    • 删除数据:
    //删除单条数据
    db
        .collection("users")
        .deleteOne({age: {$gt:5}}, function(err, info){
        if(info.result.ok === 1) {
            console.log("数据删除成功");
        }
    })
    
    //删除多条数据
    db
        .collection("users")
        .deleteMany({age: {$gt:5}}, function(err, info){
        if(info.result.ok === 1) {
            console.log("数据删除成功");
        }
    })
    
    • 修改数据:
    //修改单条数据
    db
        .collection("users")
        .updateOne({name: "tom"}, {$set: {gender:"女"}}, function(err, info){
        if(info.result.ok === 1) {
            console.log("数据修改成功了");
        }
    })
    
    //修改多条数据
    db
        .collection("users")
        .updateMany({ name: "tom" }, { $set: { gender: "不详" } }, function (err, info) {
        if (info.result.ok === 1) {
            console.log("数据修改成功了");
        }
    })

     

    node链接mongodb数据库:

     

     

     选择一个数据库中的某条数据集合进行查找:

     

     使用新的解析方式去解析连接的url地址;

     

  • 相关阅读:
    QT:不规则窗口的实现
    Sql Server (错误:7302)
    Qt源码分析之信号和槽机制
    Linux下如何发布Qt程序
    QT程序制作deb包并安装在应用程序菜单
    Another Look at Events(再谈Events)
    Qt全局热键(windows篇)(使用RegisterHotKey和句柄进行注册)
    新浪微博回归平静
    Qt中 QString 和int, char等的“相互”转换,关键是QString.toLocal8Bit().data();
    QT中异形窗口的绘制(winEvent处理WM_NCHITTEST消息)
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14197979.html
Copyright © 2020-2023  润新知