MongoDB 数据库的基本使用和node结合起来

关系型数据库和非关系型数据库

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("更新成功")
	}
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值