【前端29_Mongo】芒果數據庫使用及常用操作、Mongoose 對數據的增刪改查

非關係性數據庫:Mongo

Mongo

介紹

  • 是一種非關係性數據庫,不像MySQL那樣有很多條條框框的約束,想怎麼存就怎麼存。
  • 什麼叫數據庫,集合,文檔?請看下面的栗子。

舉個栗子:教學

  • 前提:我想創建一個論壇,論壇裏又有很多用戶,所以我需要一個論壇數據庫,其中還要一個用戶集合(表)。
    在這裏插入圖片描述
  • 然後切換數據庫,並查看當前數據庫中的集合在這裏插入圖片描述
  • 我們可以通過db.集合名.find()方法查看集合中的所有文檔(集合中的每條信息叫做文檔)

常用操作

連接數據庫

mongo

查看所有數據庫

show dbs

切換數據庫

use 數據庫名稱

展示數據庫中的集合

show collections

展示集合中的所有文檔

db.users.finds()

刪除集合中的所有文檔

> db.users.drop()
true

Mongoose 插件

官方定義如下:編寫MongoDB驗證,轉換和業務邏輯是非常麻煩的. 所以我們發明了Mongoose.

我個人的理解:就是類似JavaScriptjQuery 的關係。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 }
    }
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章