Mongo DB
参考:https://www.runoob.com/mongodb/mongodb-tutorial.html
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
关系型数据库和非关系型数据库
表就是关系
或者说表与表之间存在关系
所有的关系型数据库都需要通过 sql 来操作
所有的关系型数据库在操作之前都需要设计结构
-
而且数据呗还支持约束
- 唯一的
- 主键
- 默认值
- 非空
-
非关系型数据库非常灵活
-
有的非关系型数据库就是key-value对儿
-
MongoDB是长的最像关系型数据库的非关系数据库
- 数据库-》数据库
- 数据表-》集合(数组)
- 标记录-》文档对象
-
MongoDB不需要设计表结构
下载
https://pan.baidu.com/s/1M0nBZZe3NaFoW4cmIoxgPQ
提取:9l3v
检查是否安装成功
在浏览器中输入http://localhost:27017/。会出现:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
表明服务已经启动
使用 启动和关闭数据库
启动
启动cmd
# mongodb 默认使用执行 mongod命令所处盘符根目录下的 /data/db作为自己的数据存储目录
# 所以第一次执行命令 先手动新建目录/data/db
mongod
在d盘构建
启动
停止
开启服务控制台 ctrl+c // 直接关闭控制台
连接和推出数据库
命令行
mongo
退出:
exit
基本命令
- show dbs
- 查看数据库列表
- 只有数据库中有数据才会显示出来
- db
- 查看当前操作的数据库
- use 数据库名称
- 切换到指定的数据库(如果没有将会新建)
- 插入数据
- db.students (创建表/集合)
- db.students.insertOne({“name”:“jack”})(插入)
- show collections(查看表/集合)
- db.students.find()(查询数据)
在node中如何操作数据库
使用官方的mongodb包
使用麻烦
使用第三方mongoose来操作
https://mongoosejs.com/
安装
npm install mongoose
使用
const mongoose = require('mongoose');
//连接数据库
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, useUnifiedTopology: true});
//创建模型 设计数据库
const Cat = mongoose.model('Cat', { name: String });
//实例化一个对象
const kitty = new Cat({ name: 'Zildjian' });
//持久化保存 kitty
kitty.save().then(() => console.log('meow'));
基本概念
- 数据库
- 集合
Mongo 官方指南
设计Scheme发布model
const mongoose = require('mongoose');
//架构
var Schema = mongoose.Schema;
//1 连接数据库
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, useUnifiedTopology: true});
//2 设计集合结构(表结构)
//字段名称就是表结构的属性名称
//值
var userSchema = new Schema({
username:{
type:String,
required:true//约束 不能为空
},
username:{
type:String,
required:true//约束 不能为空
},
email:{
type:String
}
});
//3 将稳定结构发布为模型
//mongoose.model 将一个架构发布为model
//('User', userSchema) 字符串 接收的架构
const User = mongoose.model('User', userSchema);
//4 当有了模型构造函数后 就可以进行操作了
增
//4 当有了模型构造函数后 就可以进行操作了
//实例化对象
const admin = new User({
username:'admin',
password:'123456',
email:'admin@qq.com'
})
//持久化
admin.save().then((res) => console.log(res,'meow'));
删
remove删除
/**删 */
User.remove({ "username": "zs" }).then((res)=>{
console.log(res,'find1')
})
删除数据库
db.dropDatabase()
更新 修改
findByIdAndUpdate
/**更新 */
User.findByIdAndUpdate('5f339f37fa15820e20cdd856',{
password:'123'
}).then((res)=>{
console.log(res,'find1')
})
推荐使用 findOneAndUpdate 可以获取更新后数据
设置 {new:true}
/**更新 */
User.findOneAndUpdate({username:'zs' },{
password:'1234c'
},{new:true}).then((res)=>{
console.log(res,'find1')
})
Update 是更新全部
查
/**查 所有 */
User.find().then((res)=>{
console.log(res,'find')
})
/**查 条件查询*/
User.find({username:'zs'}).then((res)=>{
console.log(res,'find')
})
注意
find()是根据条件查询多个 结果是个数组
findOne()是根据条件查询单个 结果是个对象
当findOne()查询的时候 没有条件 则查询到的是第一个
/**查 条件查询*/
User.findOne({username:'zs'}).then((res)=>{
console.log(res,'find')
})
or查询
User.find({ $or: [{ "username": "zs" }, { "username": "admin" }]}).then((res)=>{
console.log(res,'find1')
})
Where 语句
db.col.find({likes : {$lt :200, $gt : 100}})
$type 操作符
用来检索集合中匹配的数据类型
如果想获取 “col” 集合中 title 为 String 的数据,你可以使用以下命令:
db.col.find({"title" : {$type : 2}})
操作Mysql
https://www.runoob.com/nodejs/nodejs-mysql.html
安装npm install mysql
-1597825594940)]
db.col.find({likes : {$lt :200, $gt : 100}})
$type 操作符
用来检索集合中匹配的数据类型
如果想获取 “col” 集合中 title 为 String 的数据,你可以使用以下命令:
db.col.find({"title" : {$type : 2}})
操作Mysql
https://www.runoob.com/nodejs/nodejs-mysql.html
安装npm install mysql