【前端29

    技术2025-01-21  10

    文章目录

    非关系性数据库:MongoMongo介绍举个栗子:教学常用操作连接数据库查看所有数据库切换数据库展示数据库中的集合展示集合中的所有文档删除集合中的所有文档 Mongoose 插件建立文档结构 Schema操作添加数据删除数据查数据修改数据

    非关系性数据库:Mongo

    Mongo

    介绍

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

    举个栗子:教学

    前提:我想创建一个论坛,论坛里又有很多用户,所以我需要一个论坛数据库,其中还要一个用户集合(表)。 然后切换数据库,并查看当前数据库中的集合我们可以通过db.集合名.find()方法查看集合中的所有文档(集合中的每条信息叫做文档)

    常用操作

    连接数据库

    mongo

    查看所有数据库

    show dbs

    切换数据库

    use 数据库名称

    展示数据库中的集合

    show collections

    展示集合中的所有文档

    db.users.finds()

    删除集合中的所有文档

    > db.users.drop() true

    Mongoose 插件

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

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

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

    建立文档结构 Schema

    用户表中的用户信息不能是没有规律的吧,需要有用户名,性别,年龄等等信息,我们需要这样一个规范,用来更好的设计,储存数据库,方便以后的查阅,这就引入了文档结构 Schema类似一下的感觉 首先在后台中,新建一个文件夹,叫啥随便你,这个文件夹作用是:用来存储文档的格式,也就是规定了每条数据都有啥属性。这个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 } } })
    Processed: 0.010, SQL: 9