MongoDB数据库的使用
1.关系型数据库和非关系型数据库
表就是关系,或者说表与表之间存在关系。
- 所有的关系型数据库都需要通过sql语言来操作
- 所有的关系型数据库在操作之前都需要设计表结构
2.MongoDB数据库
- 官网:https://www.mongodb.com/
- 中文网:https://www.mongodb.org.cn/
- 下载网址:https://www.mongodb.com/try/download
- 安装教程:https://www.runoob.com/mongodb/mongodb-window-install.html
3.启动和关闭MongoDB数据库
启动:
#mongodb默认使用执行mongod命令所处盘符根目录下的/data/db 作为自己的数据存储目录
mongod
如果想要修改默认的数据库存储目录,可以:
mongod --dbpath=数据存储目录路径
停止:
在开启服务的控制台,直接ctrl+c即可停止。
或直接关闭开启服务的控制台也可以。
4.连接数据库
连接:
#改命令默认连接本机的mongodb服务
mongo
退出:
#在连接状态输入exit即可退出
exit
基本命令
show dbs
- 查看数据库列表
db
- 查看当前操作的数据库
use 数据库名称
- 切换到指定的数据库
插入数据 db.数据表名称.insert({"name":ayng})
- 向数据表中插入一条数据
show collections
- 显示当前数据表集合
db.数据表名称.find()
- 查找数据表里所有的数据,显示出来了我们插入的数据
mongoose对数据库进行操作
1.起步
安装:
npm i mongoose
示例:
const mongoose = require('mongoose');
//连接MongoDB数据库
mongoose.connect('mongodb://localhost/test');
//设计数据库
//MongoDB是动态的,非常灵活,只需要在代码中设计你的数据库就可以了
const Cat = mongoose.model('Cat', { name: String });
//实例化一个cat
const kitty = new Cat({"name":"Zildjian"}); //这里会直接把大写转小写加复数,所以查询为:db.cats.find()
//持久化保存kitty实例
kitty.save().then(() => console.log('meow')).catch(err =>{console.log('保存失败');});
结果:
2.设计表结构
var mongoose = require('mongoose');
//连接MongoDB数据库
mongoose.connect('mongodb://localhost/test');
var Schema = mongoose.Schema;
//设计集合结构(表结构)
//字段名称就是表结构中的属性名称
var blogSchema = new Schema({
title: String,
author: String,
body: String,
});
/* 将文档结构发布为模型
* mongoose.model 方法就是用来将一个架构发布为model
* 第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
* mongoose会自动将大写名词的字符串生成小写复数的集合名称
* 第二个参数:架构Schema
**/
var Blog = mongoose.model('Blog', blogSchema);
3.新增数据
//使用构造函数对blog集合中的数据操作
var myblog = new Blog({
title:'新增数据',
author:'Yang',
body:'使用构造函数对blog集合中的数据操作'
})
myblog.save().then(() =>{console.log('保存成功');}).catch((err) =>{console.log(err);})
结果:
4.查询数据
Blog.find(function (err,ret) {
if(err){
console.log('查询失败');
}else{
console.log(ret);
}
})
结果:
6.更新数据
//更新数据 传入对象id
Blog.findByIdAndUpdate('600d34c67bdce30fd032ead1',{
title:'更新数据'
},function (err,ret) {
if(err){
console.log('更新失败');
}else{
console.log('更新成功');
console.log(ret);
}
})
结果: