使用mongoose 在 Node中操作MongoDB数据库
MongoDB
关系型和非关系型数据库
关系型数据库(表就是关系,或者说表与表之间存在关系)。
- 所有的关系型数据库都需要通过
sql
语言来操作 - 所有的关系型数据库在操作之前都需要设计表结构
- 而且数据表还支持约束
- 唯一的
- 主键
- 默认值
- 非空
非关系型数据库
- 非关系型数据库非常的灵活
- 有的关系型数据库就是key-value对儿
- 但MongDB是长得最像关系型数据库的非关系型数据库
- 数据库 -》 数据库
- 数据表 -》 集合(数组)
- 表记录 -》文档对象
一个数据库中可以有多个数据库,一个数据库中可以有多个集合(数组),一个集合中可以有多个文档(表记录)
{qq:{user:[{},{},{}...]}
}
- 也就是说你可以任意的往里面存数据,没有结构性这么一说
安装
下载
- 下载地址:https://www.mongodb.com/download-center/community
- 下载地址:https://www.mongodb.com/download-center/community
安装
一直Next即可。。。
这是安装MongoDB的服务。这是4之后的版本有的,这里安装了以后,就不用配置dbpath和logpath,也不用配置服务了。安装完了,就直接可以使用MongoDB。
npm i mongoose
- 配置环境变量
- 找到安装好的MongoDB文件夹下的bin目录
- 最后输入
mongod --version
测试是否安装成功
启动和关闭数据库
启动:
# mongodb 默认使用执行mongod 命令所处盼复根目录下的/data/db作为自己的数据存储目录
# 所以在第一次执行该命令之前先自己手动新建一个 /data/db
mongod
如果想要修改默认的数据存储目录,可以:
mongod --dbpath = 数据存储目录路径
注意:mongodb 4版本以上,不需要再手动区启动服务,默认已经自动启动了
停止:
在开启服务的控制台,直接Ctrl+C;
或者直接关闭开启服务的控制台。
连接数据库
连接:
# 该命令默认连接本机的 MongoDB 服务
mongo
退出:
# 在连接状态输入 exit 退出连接
exit
基本命令
show dbs
- 查看数据库列表(数据库中的所有数据库)
db
- 查看当前连接的数据库
- 查看当前连接的数据库
use 数据库名称
- 切换到指定的数据库,(如果没有会新建)
- 切换到指定的数据库,(如果没有会新建)
show collections
- 查看当前目录下的所有数据表
- 查看当前目录下的所有数据表
db.表名.find()
- 查看表中的详细信息
- 查看表中的详细信息
二、在Node中如何操作MongoDB数据库
使用官方的MongoDB
包来操作
http://mongodb.github.io/node-mongodb-native/
https://www.npmjs.com/package/mongodb
使用第三方包mongoose
来操作MongoDB数据库(推荐)
第三方包:mongoose
基于MongoDB官方的mongodb
包再一次做了封装,名字叫mongoose
,是WordPress项目团队开发的。
https://mongoosejs.com/
mongoose的第一个demo
新建一个项目文件夹:mongoose-demo,然后cmd 执行 npm init -y
:
执行npm install mongoose
:
demo1.js:
// 1. 引入包
const mongoose = require('mongoose');// 2. 连接MongoDB 数据库
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true,useUnifiedTopology: true
});// 3. 创建一个模型
// 就是在设计数据库
// MongoDB是动态的,非常灵活,只需要在代码中设计你的数据库就可以了
// mongoose 这个包就可以让你的设计编写过程变得非常的简单
const Cat = mongoose.model('Cat', {name: String
});// 4. 实例化一个Cat
const kitty = new Cat({name: 'Zildjian'
});// 5. 持久化保存kitty实例
kitty.save().then(() => console.log('meow'));
mongoose:
官网:http:/mongoosejs.com/
官方指南:http:/mongoosejs.com/docs/guide.html
官方API文档:http:/mongooseis.com/docs/api.html
mongoose基本使用:
1. 设计Schema发布Model:
// 1.导包
const mongoose = require('mongoose')const Schema = mongoose.Schema// 2.连接数据库
// 这里指定连接的数据库mydb可以不需要存在,当你插入第一条数据之后就会帮你自动创建这个数据库
mongoose.connect('mongodb://localhost/mydb')// 3.设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
// 值
const userSchema = new Schema({username: {type: String,require: true // 必须有该属性},password: {type: String,require: true},email: {type: String}
});// 3.将文档结构发布为模型
// mongoose.model() 就是用来将一个架构发布为 model
// 第一个参数: 传入一个大写名词单数字符串,用来表示你的数据库名称
// mongoose会自动将大写名词的字符串生成小写复数的集合名称
// 例如:这里的User最终会变为users集合名称
// 第二个参数: 架构Schema
// 返回值: 模型构造函数
var User = mongoose.model('User',userSchema)// 4.当我们有了模型构造函数之后,就可以使用这个构造函数对users集合中的数据进行操作
2. 增加数据
// 1.导包
const mongoose = require('mongoose')const Schema = mongoose.Schema// 2.连接数据库
// 这里指定连接的数据库mydb可以不需要存在,当你插入第一条数据之后就会帮你自动创建这个数据库
mongoose.connect('mongodb://localhost/mydb')// 3.设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
// 值
const userSchema = new Schema({username: {type: String,require: true // 必须有该属性},password: {type: String,require: true},email: {type: String}
});// 3.将文档结构发布为模型
// mongoose.model() 就是用来将一个架构发布为 model
// 第一个参数: 传入一个大写名词单数字符串,用来表示你的数据库名称
// mongoose会自动将大写名词的字符串生成小写复数的集合名称
// 例如:这里的User最终会变为users集合名称
// 第二个参数: 架构Schema
// 返回值: 模型构造函数
var User = mongoose.model('User',userSchema)// 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)}
})
3. 查询数据
// 1.导包
const mongoose = require('mongoose')const Schema = mongoose.Schema// 2.连接数据库
// 这里指定连接的数据库mydb可以不需要存在,当你插入第一条数据之后就会帮你自动创建这个数据库
mongoose.connect('mongodb://localhost/mydb')// 3.设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
// 值
const userSchema = new Schema({username: {type: String,require: true // 必须有该属性},password: {type: String,require: true},email: {type: String}
});// 3.将文档结构发布为模型
// mongoose.model() 就是用来将一个架构发布为 model
// 第一个参数: 传入一个大写名词单数字符串,用来表示你的数据库名称
// mongoose会自动将大写名词的字符串生成小写复数的集合名称
// 例如:这里的User最终会变为users集合名称
// 第二个参数: 架构Schema
// 返回值: 模型构造函数
var User = mongoose.model('User', userSchema)// 4.当我们有了模型构造函数之后,就可以使用这个构造函数对users集合中的数据进行操作
// 新增数据操作
/* var admin = new User({username: 'zepzep',password: '000000',email: 'zep@zep.com'
})admin.save(function(err, ret) {if(err) {console.log('保存失败')} else {console.log('保存成功!')console.log(ret)}
}) */// 查询数据操作
// 1.查询所有数据
/* User.find(function(err, ret) {if(err) {console.log('查询失败')} else {console.log(ret)}
}) */// 2.按条件查询数据,返回值为数组
/* User.find({username: 'zepzep'
}, function(err, ret) {if (err) {console.log('查询失败')} else {console.log(ret)}
})*/// 3.按条件查询数据,返回值为查找到的匹配的第一个的对象
User.findOne({username: 'zepzep',password: '111'
}, function(err, ret) {if (err) {console.log('查询失败')} else {console.log(ret)}
})
4. 删除数据
// 1.导包
const mongoose = require('mongoose')const Schema = mongoose.Schema// 2.连接数据库
// 这里指定连接的数据库mydb可以不需要存在,当你插入第一条数据之后就会帮你自动创建这个数据库
mongoose.connect('mongodb://localhost/mydb')// 3.设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
// 值
const userSchema = new Schema({username: {type: String,require: true // 必须有该属性},password: {type: String,require: true},email: {type: String}
});// 3.将文档结构发布为模型
// mongoose.model() 就是用来将一个架构发布为 model
// 第一个参数: 传入一个大写名词单数字符串,用来表示你的数据库名称
// mongoose会自动将大写名词的字符串生成小写复数的集合名称
// 例如:这里的User最终会变为users集合名称
// 第二个参数: 架构Schema
// 返回值: 模型构造函数
var User = mongoose.model('User', userSchema)// 4.当我们有了模型构造函数之后,就可以使用这个构造函数对users集合中的数据进行操作
// 新增数据操作
/* var admin = new User({username: 'zepzep',password: '000000',email: 'zep@zep.com'
})admin.save(function(err, ret) {if(err) {console.log('保存失败')} else {console.log('保存成功!')console.log(ret)}
}) */// 查询数据操作
// 1.查询所有数据
/* User.find(function(err, ret) {if(err) {console.log('查询失败')} else {console.log(ret)}
}) */// 2.按条件查询数据,返回值为数组
/* User.find({username: 'zepzep'
}, function(err, ret) {if (err) {console.log('查询失败')} else {console.log(ret)}
})*/// 3.按条件查询数据,返回值为查找到的匹配的第一个的对象
/* User.findOne({username: 'zepzep',password: '111'
}, function(err, ret) {if (err) {console.log('查询失败')} else {console.log(ret)}
}) */// 删除数据操作
User.remove({username: 'zepzep'
}, function(err, ret) {if(err) {console.log('删除失败')} else {console.log('删除成功!')console.log(ret)}
})
5.更新数据
// 1.导包
const mongoose = require('mongoose')const Schema = mongoose.Schema// 2.连接数据库
// 这里指定连接的数据库mydb可以不需要存在,当你插入第一条数据之后就会帮你自动创建这个数据库
mongoose.connect('mongodb://localhost/mydb')// 3.设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
// 值
const userSchema = new Schema({username: {type: String,require: true // 必须有该属性},password: {type: String,require: true},email: {type: String}
});// 3.将文档结构发布为模型
// mongoose.model() 就是用来将一个架构发布为 model
// 第一个参数: 传入一个大写名词单数字符串,用来表示你的数据库名称
// mongoose会自动将大写名词的字符串生成小写复数的集合名称
// 例如:这里的User最终会变为users集合名称
// 第二个参数: 架构Schema
// 返回值: 模型构造函数
var User = mongoose.model('User', userSchema)// 4.当我们有了模型构造函数之后,就可以使用这个构造函数对users集合中的数据进行操作
// 新增数据操作
/* var admin = new User({username: 'zepzep',password: '000000',email: 'zep@zep.com'
})admin.save(function(err, ret) {if(err) {console.log('保存失败')} else {console.log('保存成功!')console.log(ret)}
}) */// 查询数据操作
// 1.查询所有数据
/* User.find(function(err, ret) {if(err) {console.log('查询失败')} else {console.log(ret)}
}) */// 2.按条件查询数据,返回值为数组
/* User.find({username: 'zepzep'
}, function(err, ret) {if (err) {console.log('查询失败')} else {console.log(ret)}
})*/// 3.按条件查询数据,返回值为查找到的匹配的第一个的对象
/* User.findOne({username: 'zepzep',password: '111'
}, function(err, ret) {if (err) {console.log('查询失败')} else {console.log(ret)}
}) */// 删除数据操作
/* User.remove({username: 'zepzep'
}, function(err, ret) {if(err) {console.log('删除失败')} else {console.log('删除成功!')console.log(ret)}
}) */// 更新数据操作
User.findByIdAndUpdate('6062cff077b662686460e549', {password: '123'
}, function(err, ret) {if(err) {console.log('更新失败')} else {console.log('更新成功!')console.log(ret)}
})
使用mongoose 在 Node中操作MongoDB数据库相关推荐
- 58 Node.js中操作mongoDB数据库
技术交流 QQ 群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder 的程序人生 1.数据库概述及环境搭建 1.1 为什么要使用数据库 动态网站中的数据都是存储在数据 ...
- MongoDB简介、在node中使用MongoDB
MongoDB数据库简介: 使用MongoDB的好处是不用SQL语句,它提供了对应的API,其功能和MYSQL基本相同,是最像关系型数据库的非关系型数据库:不需要设计表的结构,文档相当于json,如果 ...
- node中操作MySQL
node操作MySQL数据库: 在node中操作MySQL数据库的基本流程如下: // node操作MySQL需要在npm官网下载mysql包并载入node执行代码:// 1.载入MySQL数据库包v ...
- node用mongodb还是mysql,Node 操作 mongoDB 数据库和 mySQL数据库
下载安装 MongoDB image.png 直接点击下载就行了 image.png 安装 mongodb 一直点击下一步,知道这一步 image.png 选中自己选择想安装的目录路径(选择安装的目录 ...
- nodejs操作mongodb数据库(mongoose)
准备 在上一篇的基础上,通过npm安装mongoose. 关于mongoose Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB n ...
- 使用第三方包mongoose来操作MongoDB数据库,解决报错:MongooseError
使用第三方包mongoose来操作MongoDB数据库 官方网站 配置文件 异常 异常描述: MongooseError: Operation cats.insertOne() buffering t ...
- eggjs使用egg-mongoose操作MongoDB数据库
eggjs使用egg-mongoose操作MongoDB数据库 npm安装mongoose依赖 npm install egg-mongoose --save 配置config/plugin.js和c ...
- Python 操作 MongoDB 数据库!
作者 |黄伟呢 来源 |数据分析与统计学之美 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 先来看看MySQL与MongoDB 概念区别 ...
- spring mysql mongdb_Spring Boot中使用MongoDB数据库的方法
MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源的文 ...
最新文章
- ASP.NET跨服务器上传文件的相关解决方案
- Vue.2.0.5-模板语法
- 父亲节python代码_python 计算 父亲节
- sql语句or与union all的执行效率比较
- python re模块compile_Python re模块的match方法
- python打印九九加法表_Python小脚本
- ubuntu linux网关不通,Ubuntu 8.04不能上网等问题的解决
- Hyper-V提供创建三种类型的虚拟网络
- hadoop1.X安装
- android显示缩略图,Android:是否可以显示视频缩略图?
- 计算机软件著作权收钱么,计算机软件著作权登记收费吗
- T32 dump 连续寄存器
- VB对IE浏览器完全控制
- Android【1】:一文教你使用Camille+夜神模拟器实现安卓应用隐私合规辅助检测
- Linux 安装gcc编译器
- easyexcel实现代码生成xlsx文件并保存到云端
- 随记(浅谈误导--交流的断章取义)
- 软件设计七大设计原则
- scratch加法出题机 电子学会图形化编程scratch等级考试三级真题和答案解析2021-3
- cogs1619. [HEOI2012]采花 x
热门文章
- ancestral 箭头符号,译林版《牛津高中英语》模块五 高二上学期
- 装机之windows10和ubuntu双系统
- Flask的csrf_token的用法
- qt android glsl,基于Qt的OpenGL学习(1)—— Hello Triangle
- bem什么意思_bem是什么意思_bem的翻译_音标_读音_用法_例句_爱词霸在线词典
- LeetCode8——String to Integer (atoi)(自己编写atoi函数)
- LESS实战::not与:hover混合使用
- ES6 数组、对象的扩展
- Git安装及密钥的生成并上传本地文件到GitHub上
- javascript常用内置对象总结(重要)