MongoDB
关系型数据库
表就是关系,或者说表与表之间存在关系
- 所有的关系型数据库都需要通过
sql
语言来操作 - 所有的关系型数据库在操作之前都需要设计表结构
- 而且数据表还支持约束
- 唯一的
- 主键
- 默认值
- 非空
非关系型数据库
- 非关系型数据库非常的灵活
- 有的关系型数据库就是 key-value(键值) 对
- 但 MongDB 是长得最像关系型数据库的非关系型数据库
- 数据库 -》 数据库
- 数据表 -》 集合(数组)
- 表记录 -》文档(对象)
- MongoDB 不需要设计表结构
- 可以任意的往里面存数据,没有结构性这么一说
基本结构
一个数据库中可以有多个库,一个库中可以有多个集合(数组),一个集合中可以有多个文档(表记录对象)
{
qq:{
user:[
{},{},{}...
]
...
}
....
}
安装
下载安装
下载地址
- https://www.mongodb.com/try/download/community
- 64 位下载地址: http://dl.mongodb.org/dl/win32/x86_64
- 32 位下载地址: http://dl.mongodb.org/dl/win32/i386
配置环境变量
和配置其它环境变量一样,配置 bin
目录
最后输入 mongod --version
测试是否安装成功(注意是 mongod)
教程和报错
- 教程: https://www.cnblogs.com/benyuanzhang/p/11060164.html
- 报错: https://blog.csdn.net/lhrdlp/article/details/106020109
启动和关闭数据库
启动
# mongodb 默认使用执行 mongod 命令所处 盘符根目录下的/data/db作为自己的数据存储目录
# 所以在第一次执行该命令之前先自己手动新建一个 /data/db
mongod
如果想要修改默认的数据存储目录,可以:
mongod --dbpath = 数据存储目录路径
停止
在开启服务的控制台,直接 Ctrl+C
或者直接关闭开启服务的控制台。
连接和退出数据库
连接
# 该命令默认连接本机的 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 项目团队开发的。
- 官网: https://mongoosejs.com
- 官方计划: https://mongoosejs.com/docs/guide.html
- 官方 API 文档: https://mongoosejs.com/docs/api.html
- 官方入门指南: https://mongoosejs.com/docs/index.html
安装
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();