一、MongoDB

1.1概述

  1. MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

  2. 关系型数据库和非关系型数据库

    • 关系型数据库:表与表之间存在关系

      • 所有的关系型数据可以都需要通过sql语言来操作

      • 所有的关系型数据库在操作之前都需要设计表结构

      • 所有关系型数据库支持约束:

        • 唯一的

        • 主键

        • 默认值

        • 非空

    • 非关系型数据库

      • 有的非关系型数据库就是key-value对儿,没有表

      • MongoDB是长得最像关系型数据库的非关系型数据库

        • 数据库->数据库

        • 数据表->集合(数组)

        • 表记录->文档对象

      • MongoDB不需要设计表结构,也就是说可以任意往里面存储数据,没有结构性这么一说

  3. MongoDB数据库的基本概念

    • 数据库——mongodb下可以有多个数据库

    • 集合——一个数据库可以有多个集合(相当于MySQL中的表)

    • 文档——一个集合可以有多个文档(相当于MySQL中的表记录)

  4. MongoDB的存储结构:
    {
    //数据库
    qq:{
    //集合
    users:[
    //文档
    {name:"张三",age:},
    {name:"李四",age:},
    {name:"王麻子",age:},
    {name:"刘老五",age:},
    {name:"赵老六",age:}
    ......
    ],
    products:[ ]
    ......
    },
    taobao:{ },
    baidu:{ }
    ......
    }

注意:

    • 文档结构很灵活,没有任何限制
    • MongoDB非常灵活,不需要像MySQL一样先创建数据库、表、设计表结构。当你需要插入数据的时候,只需要指定往哪个数据库的哪个集合操作就可以了。一切都由MongoDB来帮你自动完成建库建集合这件事儿 

1.2安装

64位下载地址:https://www.mongodb.com/download-center/community

注意:

  • 记得要配置环境变量

  • 输入  mongod --version 测试是否安装成功

1.3启动和关闭mongodb 数据库

  • 启动:

    mongod --dbpath = 数据存储目录路径

    注意:

    • MongoDB将数据目录存储在 db 目录下,但是这个数据目录不会主动创建。我们第一次启动mongodb时,需要手动在根目录下创建data\db这个目录。这里要注意,数据目录应该放在根目录下(如:C:\或者 D:\ 等, 比如我的是放在C:\data\db下)

    • 第一次启动mongodb时,执行命令:mongod --dbpath "C:\data\db",后面再启动mongodb时,直接执行命令:mongod即可

    • mongod --dbpath 命令是创建数据库文件的存放位置,第一次启动mongodb服务时需要先确定数据库文件存放的位置,否则系统不会自动创建,启动会不成功。

  • 停止:

    在开启服务的控制台,直接Ctrl+C即可停止
    或者直接关闭开启服务的控制台也可以   

1.4连接和退出mongodb数据库

连接:

#该命令默认连接本机的 MongoDB 服务
mongo

退出:

#在连接状态输入 exit 退出连接
exit

1.5基本命令

  • show dbs:查看显示所欲数据库

  • db:查看当前操作的数据库

  • use 数据库名称:切换到指定的数据库(如果没有会新建)

  • 如下:

  

1.6在Node中如何操作MongoDB数据库

1.6.1使用官方的MongoDB包来操作

下载地址:https://github.com/mongodb/node-mongodb-native

1.6.2使用第三方mongoose来操作MongoDB数据库

第三方包mongoose:基于MongoDB官方的mongodb包再一次做了封装

官网:https://mongoosejs.com/

官方指南:https://mongoosejs.com/docs/guides.html

官方API文档:https://mongoosejs.com/docs/api.html

  1. 起步

    • 安装:

      npm i mongoose
    • 实例demo:

      // 官方参考模板
      const mongoose = require('mongoose'); // 连接 MongoDB数据库
      mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true}); // 创建一个模型,就是在设计数据库
      // MongoDB是动态的,非常灵活,只需要在代码中设计数据库就可以了
      // mongoose这个包就可以让你的设计编写过程变得非常的简单
      const Cat = mongoose.model('Cat', { name: String });//虽然这里的Cat是大写,但是会生成小写的 cats 集合名称 //实例化一个Cat
      const kitty = new Cat({ name: 'Zildjian' }); // 持久化保存 Kitty 实例
      kitty.save().then(() => console.log('meow'));
  2. 官方指南

    • 设计 Schema 发布 Model

      var mongoose = require('mongoose')
      
      var Schema = mongoose.Schema
      
      // 1.连接数据库
      // 指定连接的数据库不需要存在,当你插入第一条数据之后就会自动被创建出来
      mongoose.connect('mongodb://localhost/test') // 2.设计集合结构(表结构)
      // 字段名称就是表结构中的属性名称
      // 约束的目的是为了保证数据的完整性,不要有脏数据
      var userSchema = new Schema({
      username:{
      type:String,
      required:true //表示username必须要有
      },
      password:{
      type:String,
      required:true
      },
      email:{
      type:String
      } }); //3.将集合结构发布为模型
      // mongoose.model 方法就是用来将一个架构发布为一个 model
      // 第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
      // mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称。例如这里的 User 最终会变成 users 集合名称
      // 第二个参数:架构 Schema
      // 返回值:模型构造函数
      var User = mongoose.model('User', userSchema) // 4.当有了模型构造函数之后,就可以使用这个构造函数对 users 集合中的数据为所欲为了(增删改查)
    • 增加数据

      var admin = new User({
      username:"admin",
      password:"123456",
      email:"admin@admin.com"
      }) admin.save(function(err,ret){
      if(err){
      console.log("保存失败")
      }else{
      console.log("保存成功")
      console.log(ret)
      }
      })
    • 查询

      • 查询所有

        User.find(function(err,ret){
        if(err){
        console.log("查询失败")
        }else{
        console.log(ret)
        }
        })
      • 按条件查询所有

        User.find({
        username:"zs" //这就是条件
        },function(err,ret){
        if(err){
        console.log("查询失败")
        }else{
        console.log(ret)
        }
        })
      • 按条件查询单个

        User.findOne({
        username:"zs" //这就是条件
        },function(err,ret){
        if(err){
        console.log("查询失败")
        }else{
        console.log(ret)
        }
        })
    • 删除数据

      • 删除所有符合条件的数据

        User.remove({
        username:"zs"
        },function(err,ret){
        if(err){
        console.log("删除失败")
        }else{
        console.log("删除成功")
        console.log(ret)
        }
        })
      • 删除符合条件的第一条数据

        User.deleteOne({
        username:"admin"
        }, function (err) {
        if (err){
        return handleError(err)
        }
        // deleted at most one User document
        })

        User.findOneAndRemove(conditions,[options],[callback])
      • 根据id删除一条数据

        User.findByIdAndRemove(id,[options],[callback])
    • 更新数据

      • 根据条件更新所有

        User.update(conditions,doc,[options],[callback])
      • 根据指定条件跟新一个

        User.findOneAndUpdate([conditions],[update],[options],[callback])
      • 根据id更新一个

        User.findByIdAndUpdate('5d32fa6bac0b39270c256225',{
        password:"123"
        },function(err,ret){
        if(err){
        console.log("更新失败")
        }else{
        console.log("更新成功")
        }
        })

二、MySQL

1.官方参考

https://www.npmjs.com/package/mysql

2.安装

npm install mysql

3.参考demo

var mysql      = require('mysql');

// 1.创建连接
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123',
database : 'students'
}); // 2.连接数据库
connection.connect(); // 3.执行数据操作
connection.query('SELECT * FROM `users`', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results);
}); // ---------所有的增删改查都在query方法里面操作--------------------------------------
// -------------增加数据-------------------------
// connection.query('INSERT INTO users VALUES(null,"admin","123456")', function (error, results, fields) {
// if (error) throw error;
// console.log('The solution is: ', results);
// }); // 4.关闭连接
connection.end();

注意:

  • 要提前安装好MySQL,并且打开MySQL服务
  • 对于MySQL,创建连接的数据库的表和字段需要提前设置好

最新文章

  1. iOS开发使用半透明模糊效果方法整理
  2. 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox
  3. Xcode修改storyboard大小
  4. AES加密算法实现
  5. POJ 3267 The Cow Lexicon
  6. RAID 容量计算器
  7. LR 常见问题收集及总结
  8. JSP访问Spring中的bean
  9. 使用Redis构建简单的ORM
  10. Fiddler 抓取eclipse中的请求
  11. smarty 常用参数
  12. 配色问题lingo实现
  13. 基于visual Studio2013解决面试题之0609寻找链表公共节点
  14. c# 自定义多选下拉列表2
  15. 项目自动构建工具对比(Maven、Gradle、Ant)
  16. 深入理解Linux内核 学习笔记(5)
  17. php配置文件php.ini的详细解析(续)
  18. Nginx负载均衡配置调优
  19. IDEA报错: Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.datasource.url' in value "${spring.datasource.url}"
  20. 关于java前端入门的一些简单的看法

热门文章

  1. 移动Windows开始按钮到任务栏中的任何位置
  2. go beego
  3. LeetCode 744. Find Smallest Letter Greater Than Target (寻找比目标字母大的最小字母)
  4. [转]C# 将类的内容写成JSON格式的字符串
  5. class8_Canvas 画布
  6. Codeforces 1174C Ehab and a Special Coloring Problem
  7. Linux下core文件调试
  8. ECMAScript1.1 js书写位置 | 声明变量 | 基本数据类型 | 数据类型转换 | 操作符 | 布尔类型的隐式转换
  9. 金三银四铜五铁六,Offer收到手软!
  10. tcp_tw_recycle和tcp_timestamps的一些知识(转)