关系型数据库和非关系型数据库
MongoDB数据库的基本概念
数据库
一个数据库中可以有多个集合
一个集合可以有多个文档(表记录)
文档结构很灵活,没有任何限制
{
qq:{
user:[
{name:"张三",age:15},
{name:"张三1",age:15},
{name:"张三2",age:15},
],
products:[
],
},
taobao:{
}
}
表就是关系
或者说表与表之间存在关系
1,所有的关系性数据库都需要通过sql语言来操作
2,所有的关系型数据库在操作之前都需要设计表结构
3,而且数据表还支持约束
唯一的
主键
默认值
非空
4,非关系型数据库非常的灵活
5,有的菲关系型数据库就是key-value对儿
6,但是MongoDB是长的最像关系型数据的菲关系型数据库
数据库->数据库
数据表->集合(数组)
表记录->(文档对象)
7,MongoDB不需要设计表结构
8,也就是说你可以任意往里面存数据,没有结构性这一说
安装
https://www.runoob.com/mongodb/mongodb-tutorial.html
配置环境变量
最后输入mongod --version
启动和关闭数据库
启动
//mongodb默认使用执行mongod命令所粗盘符根目录下的/data/db作为自己的数据存储目录
//所以在第一次执行该命令之前先自己手动新建一个/data/db
mongod
停止:
直接 ctrl+c就可以停止
连接数据库
//该命令默认连接本机的MongoDB服务
mongo
之前的那个命令行窗口不要关掉
退出连接
//在连接状态的呼入exit退出来
exit
基本命令
//查看显示所有数据库
show dbs
//切换到指定的数据(如果没有会新建)
use 数据库名称
在node中如何操作MongoDB数据
使用官方的MongoDB包
使用第三方mongoose来操作MongoDB数据库
第三方包:mongoose基于MongoDB官方的额mongodb包再一次做了封装
网址:http://www.mongoosejs.net/
基本使用:
先下载mongoose包
const mongoose = require('mongoose');
//连接MongoDB数据库
mongoose.connect('mongodb://localhost/test',{useMongoClient:true});
mongoose.Promise=global.Promise;
//创建一个模型
// 就是在设计数据库
// mongoDB是动态的,非常灵活,只需要在代码中设计你的数据库就可以了
// mongoose这个 包就可以让你的设计编写过程变得非常简单了
const Cat = mongoose.model('Cat', { name: String });
// 实例化一个Cat
const kitty = new Cat({ name: 'Zildjian' });
// 持久化保存kitty实例
kitty.save(function(err){
if(err){
console.log(err)
}else{
console.log('meow')
}
})
官方指南
设计schema发布model
var mongoose =require('mongoose')
// 架构
var Schema=mongoose.Schema
//1.连接数据库(名字叫test)
// 指定连接的数据库不需要存在,当你插入第一条数据之后就会自动被创建出来
mongoose.connect('mongodb://localhost/test')
// 2.设计集合(文档)结构(表结构)
// 字段名称就是表结构中的属性名称
// 值
// 约束的目的是为了保证数据的完整 性,不要有脏数据
var userSchema = new Schema({
username:{
type:String,
required:true//必须有
},
password:{
type:String,
required:true
},
email:{
type:String
}
});
// 3.将文档结构发布为模型
// mongoose.model方法就是用来将一个结构发布为model
// 第一个参数:传入一个大写名词单数字符用来表示你的数据库名称
// mongoose会自动将大写名词的字符串生成小写复数的集合名称
// 列如这里的User最终会变为users集合名称
// 第二个 参数:架构Schema
// 返回值:模型构造函数
var User = mongoose.model('User', blogSchema);
// 4.当我们有了模型构造函数之后,就可以使用这个构造函数对users集合中的数据为所欲为了
增加数据
var admin=new User({
username:"admin",
password:"123456",
email:'admin@admin.com'
})
admin.save(function(err,ret){
if(err){
console.log("保存失败")
}else{
console.log("保存成功")
console.log(ret)
}
})
查询数据
// 查询所有
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)
}
})
// 查询之后得到对象
User.findOne({
username:"zs"
},function(err,ret){
if(err){
console.log("查询失败")
}else{
console.log(ret)
}
})
删除数据
// 删除数据
User.deleteMany({
username:'zs'
},function(err,ret){
if(err){
console.log('err')
}else{
console.log("删除成功")
console.log(ret)
}
})
更新数据
// 更新数据
User.findByIdAndUpdate('5fb37b88e5faf636d0d9e3d6',{
password:'123'
},function(err,ret){
if(err){
console.log("更新失败")
}else{
console.log("更新成功")
}
})