亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

NodeJs?Express框架如何操作MongoDB數據庫

發布時間:2023-01-11 09:09:45 來源:億速云 閱讀:133 作者:iii 欄目:開發技術

這篇文章主要介紹“NodeJs Express框架如何操作MongoDB數據庫”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“NodeJs Express框架如何操作MongoDB數據庫”文章能幫助大家解決問題。

1、Mongoose模塊

(1)是一個對象模型工具,是對Node.js環境下操作MongoDB數據庫進行了封裝,可以將MongoDB數據庫中的數據轉換成JavaScript對象供用戶使用。

(2)名詞:

  • Schema:它是一種以文件形式存儲的數據庫模型骨架,不具備對數據庫操作的能力,僅僅只是數據庫在程序片段中的一種表現,可以理解為表結構。

  • Model:由Schema發布生成的模型,具有抽象屬性和行為的數據庫操作

  • Entity:由Model創建的實體,它的操作也會影響數據庫

(3)命名規范:駝峰命名 例:

PersonSchema:Person對應的Schema ,Person的文本屬性(表結構)

PersonModel:Person對應的Model

PersonEntity:Person對應的Entity

Schema生成Model,由Model生成Entity,Model和Entity都可以操作數據庫,Model的可操作性更強。

2、Mongoose模塊的使用

(1)安裝:npm install mongoose

(2)創建數據庫連接文件

// 導入mongoose模塊
const Mongoose = require('mongoose');
// 定義MongoDB數據庫的連接字符串:協議://主機地址:端口號/數據庫名
const mdb_url = 'mongodb://localhost:27017/my_test';
/*
    建立和MongoDB數據庫的連接
    useNewUrlParser:是否使用新的url地址轉換方式
    useUnifiedTopology:是否使用新的用戶安全策略
*/
Mongoose.connect(mdb_url,{useNewUrlParser:true,useUnifiedTopology:true});
// 對連接過程進行處理
// 建立連接  ——連接成功觸發connected事件
Mongoose.connection.on('connected',()=>{
    console.log('數據庫連接成功~'+mdb_url);
})
// 連接異常 ——回調函數的參數中保存了異常的信息
Mongoose.connection.on('error',(e)=>{
    console.log(e);
})
//斷開連接 ——斷開連接觸發
Mongoose.connection.on('disconnected',()=>{
    console.log('斷開數據庫的連接~');
})
// 導出mongoose
module.exports = Mongoose;

(3)創建Schema,再由Schema創建Model

  • Schema:定義的是與集合對應的骨架。Schema中的屬性對應的是MongoDB中集合的key。

  • 是Schema的實例,用于操作MongoDB中的集合中的文檔。

3、關于模型名稱和數據庫中集合名稱的對應關系

(1)數據庫中沒有集合

mongoose.model('Admin',AdminSchema) ——>在模型名后加s就是集合名(不區分大小寫) ——admins

mongoose.model('Admin',AdminSchema,'admin')——>第三個參數就是用于定義的集合名稱

(2)數據庫中有集合

mongoose.model('Admin',AdminSchema,'數據庫中已有的集合名')

4、mongoose的基本操作

(1)插入文檔:save方法

  • 先使用Model創建Entity

  • 然后使用Entity調用save方法

const AdminModel = require('../model/adminModel');
// 通過model創建一個對象
const admin = new AdminModel({
    _id:'1005',
    userName:'唐僧',
    password:'123456',
    address:'東土大唐'
})
/*
*   通過對象調用save方法向數據庫中插入數據err存放的是保存失敗后的信息 res是保存的對象
*/
admin.save((err,res)=>{
    if(err){
        console.log(err);
    }else{
        console.log(res);
    }
})

(2)刪除文檔:findByIdAndDelete :直接通過Model調用,作用是根據文檔的_id屬性刪除

(3)刪除文檔:deleteOne:直接通過Model調用,根據給定的條件刪除文檔

(4)更新文檔:findOneAndUpdate,直接通過Model調用

findOneAndUpdate(條件,更新語句,{},回調函數)

AdminModel.findOneAndUpdate(
    {'_id':'1004'},  //表示查詢的條件
    {$set:{'password':'789567'}}, //更新語句
    null,  //表示查詢操作,通常為null
    (err,data)=>{ //更新回調函數,err表示數據庫的錯誤信息,data中存放的findOne查詢到的文檔
        if(err){
          console.log(err);  //err表示數據庫錯誤:查詢、更新時數據庫出現異常
        }else if(!data){ //data為null時表示沒有找到對應的文檔
            console.log('更新失敗~');
        }else if(data){  //data不為null時表示找到對應的文檔
            console.log('更新成功~')
        }
    })

(5)更新文檔:updateOne(條件,更新語句,回調函數)

AdminModel.updateOne({'password':'123456'},{$set:{'password':'567890'}},(err,data)=>{
    if(err){
        console.log(err);
    }
    console.log(data.modifiedCount);
})

(6)查詢所有:find

AdminModel.find((err,data)=>{
    if(err){
        console.log(err);
    }
    console.log(data);
})

(7)按_id查詢:findById

AdminModel.findById({
    '_id':'1004'
},(err,data)=>{
    if(err){
        console.log(err);
    }
    console.log(data);
})

(8)多條件查詢:findOne 返回滿足條件的第一條記錄

AdminModel.findOne({
    address:'三國',
    password:'123456'
},(err,data)=>{
    if(err){
        console.log(err);
    }
    console.log(data)
})

(9)查詢集合中的文檔數量 :count

AdminModel.count((err,data)=>{
    if(err){
        console.log(err);
    }
    console.log('記錄數:'+data);
})

關于“NodeJs Express框架如何操作MongoDB數據庫”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

深泽县| 盐亭县| 巩留县| 左权县| 永和县| 会泽县| 米林县| 上饶县| 安远县| 甘肃省| 聊城市| SHOW| 闽侯县| 天镇县| 会理县| 宁德市| 静海县| 突泉县| 义马市| 桂林市| 大新县| 增城市| 宜都市| 凌云县| 鹰潭市| 金寨县| 梨树县| 松桃| 桑日县| 怀化市| 武冈市| 平原县| 图们市| 华亭县| 许昌县| 富锦市| 涞水县| 祁东县| 页游| 全南县| 城固县|