mongoose入门以及mongoose实现数据的增删改查
什么是mongoose?
-
mongoose的简介
-
mongoose是在node.js异步环境下对mongodb进行辩解操作的对象模工具。
-
mongoose是
node的驱动,不能作为其他语言的驱动。
-
-
mongoose两个特点
-
通过关系型数据库的思想来设计
非关系型数据库 -
基于
mongodb驱动,简化操作
-
-
理解mongoose(
三个基本概念)-
Schema: 相当于一个数据库的模板·. Model可以通过mongoose.model 集成其基本属性内容. 当然也可以选择不继承. -
Model: 基本文档数据的父类,通过集成Schema定义的基本方法和属性得到相关的内容的模型. -
Instance: 通过 new Model()初始化得到的数据.
-
mongoose的安装以及使用流程
说明:本人使用VS Code编译器进行操作演示
-
新建一个文件夹📁(test)作为项目目录并放置工作区(项目名不能为mongoose,否则无法安装mongoose)
-
在项目目录新建一个.js文件📃(conndb.js)
-
在test目录下进行操作
-
初始化—在终端执行**
npm init --yes**生成package.json文件 -
安装mongoose—在终端执行**
npm install mongoose --save**
-
-
在conndb.js文件中操作(此模块只做引入连接)
-
引入mongoose
var mongoose=require("momgoose") -
与数据库建立连接
mongoose.connect( 'mongodb://127.0.0.1:27017/may', {useUnifiedTopology:true,useNewUrlParser:true}, function(err){ if(err){ console.log("连接失败!!!"); }else{ console.log("连接成功~~~"); } } )参数一:连接地址
【mongodb协议://IP地址:端口号/数据库名】
参数二:使用解析器来解析本次连接
参数三:设置回调函数
-
使用commonJS规范导出
module.exports = mongoose⚠️:以上三个步骤完成后,在终端输入
node conndb查看是否连接成功
-
-
新建一个fruits.js文件(此模块处理fruits的增删改查)
-
引入连接数据库的代码
var db = require("./conndb") -
定义Schema:创建集合fruits对应的模板(相当于表结构,在node.js里创建一个表结构)
let fruitSchema = new db.Schema({ 'name':String, 'price':Number })
😊:Schema通过限制输入的字段类型来定义documents的基本字段和集合
-
创建Model:把数据库中集合users和模版进行对应和绑定,建立通道
let fruitModel = db.model('fruits',fruitSchema)参数一:集合名
参数二:定义的Schema
😊:Model才是操作数据库最直接的一块内容. 我们所有的CRUD就是围绕着Model 展开的
-
把数据可以通过这个通道插入进去
let object ={ 'name':"苹果", 'price':10 } -
将obj数据放入刚刚创建的模型中(相当于把内存中的数据放在硬盘上)
let fruitEntity = new fruitModel(object) -
进行增删改查操作(⚠️:每次操作都需要在终端输入
node fruits.js重新连接)-
增加数据:
save(),create(),insertMany()fruitEntity.save((err,data)=>{ if(!err){ console.log("添加成功!"); console.log(data) } })
-
更新数据:
updateOne():更改一条数据,updateMany():更改多条数据fruitModel.updateOne({"name":"香蕉"},{$set:{"name":"梨"}}).then((data)=>{ console.log(data) console.log("更新成功") },(err)=>{ console.log("查询失败") }) -
查询数据
-
查询全部数据:
find()fruitModel.find().then((data)=>{ console.log(data); console.log("查询成功") },(err)=>{ console.log("查询失败") }) -
按照自定义条件查询所有数据:
find({key:value})fruitModel.find({"name":"柠檬"}).then((data)=>{ console.log(data); console.log("查询成功") },(err)=>{ console.log("查询失败") }) -
按照自定义的条件查询一条数据:
findOne({key:value})fruitModel.findOne({"name":"柠檬"}).then((data)=>{ console.log(data); console.log("查询成功") },(err)=>{ console.log("查询失败") }) -
条件查询:
$lt 小于,$lte 小于等于,$gt 大于,$gte 大于等于,$ne 不等于fruitModel.find({"price":{$ne:"10"}}).then((data)=>{ console.log(data); console.log("查询成功") },(err)=>{ console.log("查询失败") }) -
去重:
distinct('字段名')fruitModel.distinct('name').then((data)=>{ console.log(data); console.log("去重查询成功") },(err)=>{ console.log("去重查询失败") }) -
or查询fruitModel.find({$or:[{"name":"柠檬"},{"name":"梨"}]}).then((data)=>{ console.log(data); console.log("or查询成功") },(err)=>{ console.log("or查询失败") }) -
limit()限制显示条数fruitModel.find().limit(4).then((data)=>{ console.log(data); console.log("limit查询成功") },(err)=>{ console.log("limit查询失败") }) -
skip()跳过几条fruitModel.find().skip(3).then((data)=>{ console.log(data); console.log("skip查询成功") },(err)=>{ console.log("skip查询失败") })
-
-
删除:
remove():不传入条件,删除全部-
条件删除
fruitModel.remove({"name":"苹果"}).then((data)=>{ console.log(data); console.log("remove成功") },(err)=>{ console.log("remove失败") }) -
删除全部
fruitModel.remove().then((data)=>{ console.log(data); console.log("remove成功") },(err)=>{ console.log("remove失败") })
-
-
-

这篇博客介绍了mongoose的基础知识,包括mongoose的简介和特点。它强调mongoose是用于node.js环境中操作mongodb的库,提供了关系型数据库思想的设计方式。博客详细阐述了mongoose的安装步骤,并展示了如何在VS Code中建立数据库连接。此外,还通过fruits.js文件演示了如何定义Schema、创建Model以及进行数据的增删改查操作。
1237

被折叠的 条评论
为什么被折叠?



