8. MongoDB
近两日的笔记整理 MongoDB + mqsql + Peomise 课堂案例
8.1关系型数据库和非关系型数据库表
表就是关系,或者说表与表之间存在关系
- 所有的关系型数据库都需要通过
sql
语言来操作 - 所有的关系型数据库都需要在操作前都需要设计表结构
- 还需要支持约束
- 唯一的
- 主键
- 默认值
- 非空
- 非关系型数据库非常的灵活
- 有的非关系型数据库就是
键值对
- 但是 MongoDB 是长得最像关系数据库和非关系数据库
- 数据库 -> 数据库
- 数据表 -> 集合(数组)
- 表记录 -> 文档对象
- MongoDB 不需要设计表结构
- 也就是说你可以任意的往里面存数据,没有结构性这么一说
MongoDB中文文档
https://www.runoob.com/mongodb/mongodb-tutorial.html
启动:
# 注意: mongdd 默认使用执行 mongod 命令所处盘符根目录下的 /data/db 作为自己的数据存储目录
mongod
# 如果想要修改默认的数据存储目录。可以:
mongod --dbpath=数据存储目录路径
停止:
# 在开启服务的控制才,ctrl+c
# 或者直接关闭
8.2连接和退出数据库
连接:
mongo
退出:
exit
8.3 基本命令
-
show dbs
- 查看当前数据库
-
db
- 查看当前操作的数据库
-
use 数据库名称
- 切换到指定数据库(如果没有就新建)
-
插入数据
8.4 在 Node 中如何操作 MongoDB
使用官方的 mongodb
包来使用
- 网址:https://www.npmjs.com/package/mongodb
使用第三方 mongoose
来操作MongoDB
第三方包: mongoose
基于mongodb
包再次封装。
- 网址:https://mongoosejs.com/
1.基本概念
- 数据库
- 一个数据库中有多个集合,多个集合里可以有多个文档
- 文档
{
qq:{
shuju1:[
],
....
},
taobao:{
},
baidu:{
}
}
2.起步:
安装:
npm i mongoose
hello world:
const mongoose = require('mongoose');
// 连接mongodb数据库
mongoose.connect('mongodb://localhost:27017/test', {
useNewUrlParser: true, useUnifiedTopology: true });
/* 创建一个模型
即使在设计数据库
它是动态的非常灵活,只需要在代码中设计
*/
// 实例化cat
const Cat = mongoose.model('Cat', {
name: String });
// 持久化保存 kitty 实例
const kitty = new Cat({
name: 'Zildjian' });
kitty.save().then(() => console.log('meow'));
3.官方指南
3.1设计Schema 发布 Model
// 连接数据库
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// 指定连接的数据库不需要存在,当你插入第一条数据之后就会自动被创建出来
mongoose.connect('mongodb://localhost/itcast');
/* 设计集合结构(表结构)
字段名称就是表结构中的属性名称
约束的目的是为了保证数据的完整性,不要有脏数据 */
var userSchema = new Schema({
username: {
type: String,
require: true
},
password: {
type: String,
required: true
},
email: {
type: String
}
});
// 3.将文档结构发布为模型
/* mongoose.model 方法就是用来将一个架构发布为 model
第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称, mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称;
例如这里的 Uer 最终会变成 users 的集合名称
第二个参数: 架构 Schema
返回值:模型构造函数 */
var User = mongoose.model('User', userSchema);
// 4.当我们有了模型构造函数之后,就可以这个构造函数对 User 集合中的数据可以为所欲为了
期间要确保数据库已经在 cmd
开启
3.2 增加 数据
var admin = new User({
username: 'admin',
password: '123',
email: 'admin@admin.com'
});
admin.save(function(err, ret) {
if (err) {
console.log(