MongoDB

关系型数据库

表就是关系,或者说表与表之间存在关系

  • 所有的关系型数据库都需要通过 sql 语言来操作
  • 所有的关系型数据库在操作之前都需要设计表结构
  • 而且数据表还支持约束
    • 唯一的
    • 主键
    • 默认值
    • 非空

非关系型数据库

  • 非关系型数据库非常的灵活
  • 有的关系型数据库就是 key-value(键值) 对
  • 但 MongDB 是长得最像关系型数据库的非关系型数据库
    • 数据库 -》 数据库
    • 数据表 -》 集合(数组)
    • 表记录 -》文档(对象)
  • MongoDB 不需要设计表结构
  • 可以任意的往里面存数据,没有结构性这么一说

基本结构

一个数据库中可以有多个库,一个库中可以有多个集合(数组),一个集合中可以有多个文档(表记录对象)

  1. {
  2. qq:{
  3. user:[
  4. {},{},{}...
  5. ]
  6. ...
  7. }
  8. ....
  9. }

安装

下载安装

下载地址

配置环境变量

和配置其它环境变量一样,配置 bin 目录

最后输入 mongod --version 测试是否安装成功(注意是 mongod)

教程和报错

启动和关闭数据库

启动

  1. # mongodb 默认使用执行 mongod 命令所处 盘符根目录下的/data/db作为自己的数据存储目录
  2. # 所以在第一次执行该命令之前先自己手动新建一个 /data/db
  3. mongod

如果想要修改默认的数据存储目录,可以:

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

停止

  1. 在开启服务的控制台,直接 Ctrl+C
  2. 或者直接关闭开启服务的控制台。

连接和退出数据库

连接

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

退出

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

基本命令

  • show dbs
    • 查看所有数据库列表
  • db
    • 查看当前连接的数据库
  • use 数据库名称
    • 切换到指定的数据库(如果没有会新建)
    • 只有插入数据后才会真正创建数据库
  • db.集合名.inserOne(对象)
    • 插入数据
  • show collections
    • 查看当前数据库下的所有集合(表)
  • db.集合名.find()
    • 查看集合中的详细信息

在 Node 中操作 MongoDB 数据库

使用官方的 MongoDB 包

官方的比较原始,麻烦,所以不使用它

https://mongodb.github.io/node-mongodb-native https://github.com/mongodb/node-mongodb-native

使用 mongoose 包

第三方包: mongoose 基于MongoDB官方的 mongodb 包再一次做了封装,名字叫 mongoose ,是 WordPress 项目团队开发的。

安装

cnpm i mongoose --save

使用

const mongoose = require('mongoose'); 
// 连接 mongoDB 数据库 
mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true, useUnifiedTopology: true }); 
// 创建一个模型(设计数据库) 
const Cat = mongoose.model('Cat', { name: String }); 
// 实例化一个 Cat(会生成一个小写复数的集合) 
const kitty = new Cat({ name: 'Zildjian' }); 
// 持久化保存 Kitty 实例 
kitty.save().then(() => console.log('meow'));

设计 Scheme 发布 Model

des:相当于创建表结构

注意:设计集合结构时,对象名不能有大写(例如 userName )

// 1.引包 
var mongoose = require('mongoose'); 
// 拿到  S chema   图表 
var Schema = mongoose.Schema; 
// 2.连接数据库 
// 指定连接数据库后不需要存在,当你插入第一条数据库后会自动创建数据库 
mongoose.connect('mongodb://localhost :27017 /test' , { useNewUrlParser: true, useUnifiedTopology: true } ); 
// 3.设计集合结构(表结构) 
// 用户表 
var userSchema = new Schema({ 
username: { 
type: String, 
require d : true //添加约束,保证数据的完整性,让数据按规矩统一 
}, 
password: { 
type: String, 
require d : true 
}, 
email: { 
type: String 
} 
}); 
// 4.将文档结构发布为模型 
//   第一个参数:大写单数 集合 名 (最终 会 转换为 小写复数集合名 ,表 名 ) 
//   第二个参数:架构  Schema(集合结构, 表结构) 
//   返回值:模型构造函数 
var User = mongoose.model('User', userSchema);

添加(增)

注 :版本不同可能 API 不同

// 5.通过模型构造函数对User中的数据进行操作 
var user = new User({ 
username: 'admin', 
password: '123456', 
email: 'admin@qq.com' 
}); 
user.save(function(err, ret) { 
if (err) { 
console.log('保存失败'); 
} else { 
console.log('保存成功'); 
console.log(ret); 
} 
});

删除(删)

注 :版本不同可能 API 不同

根据条件删除所有:

User.remove({ 
username: ' zs ' 
}, function(err, ret) { 
if (err) { 
console.log('删除失败') 
} else { 
console.log('删除成功') 
console.log(ret) 
} 
})

根据条件删除一个:

Model.findOneAndRemove(conditions,[options],[callback]);

根据id 删除一个:

Model.(id,[options],[callback]);

更新(改)

注 :版本不同可能 API 不同

更新所有:

Model.update(conditions,   doc,   [options],   [callback]);

根据指定条件更新一个:

Model.updateOn e([conditions], [update], [options],[callback]);

根据 id 更新一个:

// 更新    根据   id   来修改表数据 
User.findByIdAndUpdate('5 f19 4f 80f a4 659521 8 e 5 7110 ', { 
 p a ssword : ' 123 ' 
}, function(err, ret) { 
if (err) { 
console.log('更新失败'); 
} else { 
console.log('更新成功'); 
} 
});

查询(查)

注 :版本不同可能 API 不同

查询所有:

// 查询所有 
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); 
} 
});

条件查询单个:

// 按照条件查询单个, 返回的是对象 
// 没有条件查询使用   findOne   方法,查询的是表中的第一条数据 
User.findOne({ 
username: ' zs ' 
}, function(err, ret) { 
if (err) { 
console.log('查询失败'); 
} else { 
console.log(ret); 
} 
});

通过 id 查询单个:

Model.findById(id,[options],[callback]);

使用 Node 操作 MySQL 数据库

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

安装:

c npm i  mysql --save
// 引入mysql包 
var mysql = require('mysql'); 
//  1.创建连接 
var connection = mysql.createConnection({ 
host: 'localhost', // 本机 
user: 'me', // 账号root 
password: 'secret', // 密码 12345 
database: 'my_db' // 数据库名 
}); 

// 2.连接数据库 
connection.connect(); 

// 3.执行数据操作 
// 第一个参数写 sql 语句 
connection.query('SELECT * FROM `users`', function (error, results, fields) { 
    if (error) throw error; // 抛出异常阻止代码往下执行 
    // 没有异常打印输出结果 
    console.log('The solution is: ',results); 
}); 
//  4.关闭连接 
connection.end();