欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【前端29_Mongo】芒果数据库使用及常用操作、Mongoose 对数据的增删改查

程序员文章站 2022-06-10 18:57:57
...

非关系性数据库:Mongo

Mongo

介绍

  • 是一种非关系性数据库,不像MySQL那样有很多条条框框的约束,想怎么存就怎么存。
  • 什么叫数据库,集合,文档?请看下面的栗子。

举个栗子:教学

  • 前提:我想创建一个论坛,论坛里又有很多用户,所以我需要一个论坛数据库,其中还要一个用户集合(表)。
    【前端29_Mongo】芒果数据库使用及常用操作、Mongoose 对数据的增删改查
  • 然后切换数据库,并查看当前数据库中的集合【前端29_Mongo】芒果数据库使用及常用操作、Mongoose 对数据的增删改查
  • 我们可以通过db.集合名.find()方法查看集合中的所有文档(集合中的每条信息叫做文档)

常用操作

连接数据库

mongo

查看所有数据库

show dbs

切换数据库

use 数据库名称

展示数据库中的集合

show collections

展示集合中的所有文档

db.users.finds()

删除集合中的所有文档

> db.users.drop()
true

Mongoose 插件

官方定义如下:编写MongoDB验证,转换和业务逻辑是非常麻烦的. 所以我们发明了Mongoose.

我个人的理解:就是类似JavaScriptjQuery 的关系。Mongoose相当于jQuery

  • 数据库是不需要输入命令的时候建立的,它是在你插入数据的时候就给你建立

建立文档结构 Schema

  • 用户表中的用户信息不能是没有规律的吧,需要有用户名,性别,年龄等等信息,我们需要这样一个规范,用来更好的设计,储存数据库,方便以后的查阅,这就引入了文档结构 Schema
  • 类似一下的感觉
    【前端29_Mongo】芒果数据库使用及常用操作、Mongoose 对数据的增删改查
  • 首先在后台中,新建一个文件夹,叫啥随便你,这个文件夹作用是:用来存储文档的格式,也就是规定了每条数据都有啥属性。
  • 这个js文件连接了数据库,并且引入了mongoose 插件
  • 记得最后要导出,导出的名字不要写成复数,也就是我上图中的 module.exports = User,因为插件会帮你转成复数
const mongoose = require('mongoose')
const dbName = 'myWeibo'

mongoose.connect(`mongodb://localhost:27017/${dbName}`, {useNewUrlParser: true, useUnifiedTopology: true})

// 设置文档结构
var Schema = mongoose.Schema;
var userSchema = new Schema({
    username:String,
    psw:String
})
const User = mongoose.model('User', userSchema)
module.exports = User

操作

添加数据

  • 需要先引入文档结构
  • 然后通过.save方法保存
// 引入用户表格式 Schema
// weiboUser 是我的文档结构的名字,你的自己看看是啥
const weiboUser = require('../module/weiboUser')
new weiboUser(需要保存的数据).save((err, ret) => {
    if(err){
    	// 保存失败
    }else{
		// 保存成功
    }
})  

删除数据

根据条件删除文档

weiboUser.remove({'username': '王先生'},{
    password:'123'
}, function (err,ret) {
    if(err) {
        console.log('删除失败')
    } else {
       console.log('删除成功')
       console.log(ret);
       // { n: 1, ok: 1, deletedCount: 1 }
    }
})

查数据

  • 可以通过文档结构.find(查询的数据,回调函数(err, ret){})来查询数据,其中ret就是查询到的文档(数据)
  • 也可以查询一个findOne()
weiboUser.find({'username':data.username}, (err, ret) => {
	if(ret === null) {
		 // 如果没查到
	} else {
		// 如果查到了
	}
})

修改数据

通过id来修改数据
其中的ret返回的是修改前的数据内容

// 删除
weiboUser.findByIdAndUpdate('5effddd9630b7d430c4e79aa',{
    psw:'123'
}, function (err,ret) {
    if(err) {
        console.log('修改失败')
    } else {
       console.log('修改成功')
       console.log(ret);
       // 他会返回修改前的数据
       // { _id: 5effddd9630b7d430c4e79aa, username: '王先生', psw: '1', __v: 0 }
    }
})
相关标签: 【前端】笔记