MongoDB(二) :Mongoose基本操作

更新於 2024/10/11閱讀時間約 9 分鐘

※ Mongoose官網

raw-image


※ 認識Mongoose

Mongoose 是提供給 Node.js 使用的 MongoDB ODM。透過 Mongoose,我們可以用物件導向語法,以更直覺的方式操作 MongoDB 資料庫。

raw-image

※ Mongoose安裝

raw-image


※ 建立資料夾:

mkdir mongodb
cd mongodb
code .

※ 建立檔案app.js:

raw-image


※ 初始化,建立package.json:

npm init -y
raw-image
raw-image


※ 下載Mongoose:

npm install mongoose -p


※ 典型的 Mongoose 基本流程架構:

  1. 導入 Mongoose 模組:使用 require('mongoose') 將 Mongoose 模組導入到你的程式中。
  2. 連接 MongoDB 資料庫:通過 mongoose.connect 方法,並透過 db 這個 Promise 物件,來表示 Mongoose 連接資料庫的過程。
  3. 定義資料模型:使用 mongoose.model 方法,定義資料模型並設定每個文件的結構和驗證規則。
  4. 增刪改查:使用 Mongoose 的各種方法(如 insertMany、find、updateOne、deleteMany 等)進行資料的增刪改查操作。


※ 透過 Mongoose 來連接本地的 MongoDB 資料庫。

//導入了 Mongoose 模組
const mongoose = require('mongoose');
//MongoDB 資料庫的連接
const db = mongoose.connect('mongodb://localhost:27017/school');

透過db 這個 Promise 物件,來表示 Mongoose 連接資料庫的過程。

db.then(mongo => {
console.log("Connected to MongoDB!");
});


※ 定義一個資料模型School,並設定每個 School 文件的結構和驗證規則:

db.then(mongo => {
const School = mongo.model('School', {

    name: String,

    year: {

      type: Number,

      min: 5,

      max: 10,

      required: [true]

    },

    created_at: {

      type: Date,

      default: Date.now

    }
})
});


新增多筆資料:

db.then(mongo => {
const School = mongo.model('School', {

    name: String,

    year: {

      type: Number,

      min: 5,

      max: 10,

      required: [true]

    },

    created_at: {

      type: Date,

      default: Date.now

    }
})
//新增多筆資料
School.insertMany([
{ name: '台灣大學', year: 10 },
{ name: '大學-2', year: 10 },
{ name: 'Js School', year: 8 }
])
.then(docs => {
console.log(docs);
})
.catch(err => {
console.error(err);
});
});


更新資料:

db.then(mongo => {
const School = mongo.model('School', {

    name: String,

    year: {

      type: Number,

      min: 5,

      max: 10,

      required: [true]

    },

    created_at: {

      type: Date,

      default: Date.now

    }
})//更新單筆資料
School.updateOne({ name: 'Js School' }, { $set: { year: 9 } })
.then(result => {
console.log('Update successful', result);
})
.catch(err => {
console.error(err);
});
//更新多筆資料
School.updateMany({ year: 10 }, { $set: { year: 11 } })
.then(result => {
console.log('Update successful', result);
})
.catch(err => {
console.error(err);
});

});


查詢資料:

db.then(mongo => {
const School = mongo.model('School', {

    name: String,

    year: {

      type: Number,

      min: 5,

      max: 10,

      required: [true]

    },

    created_at: {

      type: Date,

      default: Date.now

    }
})
//查詢資料
School.find({})
.then(docs => {
console.log(docs);
})
.catch(err => {
console.error(err);
});
});


刪除資料:

db.then(mongo => {
const School = mongo.model('School', {

    name: String,

    year: {

      type: Number,

      min: 5,

      max: 10,

      required: [true]

    },

    created_at: {

      type: Date,

      default: Date.now

    }
})
//刪除單筆資料
School.deleteOne({ _id: "67088f46b50c8cf8d6ceafeb" })
.then(() => {
console.log('Delete successful');
})
.catch(err => {
console.error(err);
});
//刪除多筆資料
School.deleteMany({})
.then(() => {
console.log('Delete successful');
})
.catch(err => {
console.error(err);
});
});


    全端網頁開發專業知識分享
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    ※建置 MongoDB 資料庫,可以有兩種方式: 上 MongoDB 官網,把 MongoDB 的軟體下載下來,在本地安裝資料庫。 使用 MongoDB Atlas,這是 MongoDB 官方提供的全球雲端文件資料庫服務。 兩者的功能和操作上是相同的,在本地安裝與啟動資料庫會有連線速度上的優勢
    ※ 什麼是Apollo GraphQL Server? Apollo GraphQL Server 是一個將GraphQL的標準轉化為實際可用的工具和框架,可以在Node.js 常用的中介軟體像是 Express 或 Fastify 所建立的伺服器中,輕鬆加入和設定 Apollo GraphQL
    ※ REST API 和 Apollo GraphQL Server 的區別: 資料獲取方式: REST API:每個資源都有一個固定的 URL,並且通過 HTTP 方法(如 GET、POST、PUT、DELETE)來操作這些資源。伺服器決定返回的資料結構。 GraphQL:使用單一的端點(通
    ※ 什麼是GraphQL? GraphQL 是由 Facebook 於 2015 年開發的一種 API 查詢語言。客戶端(前端)只會接收到所需的數據,減少了不必要的數據傳輸和多次請求的需要,提高了應用程序的性能和效率。GraphQL 支持查詢、變更和即時更新操作,解決了傳統 REST API 中的
    ※ Express串接MySQL相關套件介紹 ★ Express 資料庫設定套件,mysqljs和 mysql2比較 相同點:都是讓 Node.js 能使用 MySQL 的套件 (package)。安裝之後我們就能在 Node.js application 裡使用 SQL 指令,操作 SQL
    ※ 設定首頁路由兩種寫法: ● res.send() // 設定首頁路由 app.get('/', (req, res) => { res.send('hello world') }) 說明: 功能:res.send() 用於發送 HTTP 回應消息。它可以發送字符串、Buffer、對
    ※建置 MongoDB 資料庫,可以有兩種方式: 上 MongoDB 官網,把 MongoDB 的軟體下載下來,在本地安裝資料庫。 使用 MongoDB Atlas,這是 MongoDB 官方提供的全球雲端文件資料庫服務。 兩者的功能和操作上是相同的,在本地安裝與啟動資料庫會有連線速度上的優勢
    ※ 什麼是Apollo GraphQL Server? Apollo GraphQL Server 是一個將GraphQL的標準轉化為實際可用的工具和框架,可以在Node.js 常用的中介軟體像是 Express 或 Fastify 所建立的伺服器中,輕鬆加入和設定 Apollo GraphQL
    ※ REST API 和 Apollo GraphQL Server 的區別: 資料獲取方式: REST API:每個資源都有一個固定的 URL,並且通過 HTTP 方法(如 GET、POST、PUT、DELETE)來操作這些資源。伺服器決定返回的資料結構。 GraphQL:使用單一的端點(通
    ※ 什麼是GraphQL? GraphQL 是由 Facebook 於 2015 年開發的一種 API 查詢語言。客戶端(前端)只會接收到所需的數據,減少了不必要的數據傳輸和多次請求的需要,提高了應用程序的性能和效率。GraphQL 支持查詢、變更和即時更新操作,解決了傳統 REST API 中的
    ※ Express串接MySQL相關套件介紹 ★ Express 資料庫設定套件,mysqljs和 mysql2比較 相同點:都是讓 Node.js 能使用 MySQL 的套件 (package)。安裝之後我們就能在 Node.js application 裡使用 SQL 指令,操作 SQL
    ※ 設定首頁路由兩種寫法: ● res.send() // 設定首頁路由 app.get('/', (req, res) => { res.send('hello world') }) 說明: 功能:res.send() 用於發送 HTTP 回應消息。它可以發送字符串、Buffer、對
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
    Thumbnail
    在這篇教學文章中,我們將展示如何使用 Node.js 建立一個簡單的伺服器,並解決常見的跨來源資源共享(CORS)問題,確保伺服器能夠接收並處理來自不同來源的資料。
    Thumbnail
    JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
    ※ 補充說明: ※ npm 常用指令: ◦ npm init–y:快速初始化一個新的 Node.js 並建立一個 package.json 文件的命令。 ◦ npm info 套件名稱 version:快速查詢指定 npm 套件的最新版本號。 ◦ npm install套件名稱:用來安裝
    Thumbnail
    Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
    Thumbnail
    支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
    ※ Express 專案步驟筆記清單 Node.js 環境建置核對 新增專案資料夾 設定 package.json npm init -y 設定程式入口為 app.js 安裝 Express:npm install express 設定主程式 app.js 建構應用程式伺服器 設定
    Thumbnail
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
    Thumbnail
    Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    這篇文章介紹了網站的整體架構以及開發時所使用的工具和套件,包括 Next.js、Tailwind CSS 和 socket.io 等。文章回顧了程式碼的重構與優化,幫助開發者提高工作效率,適合希望深入瞭解前端開發和網站架構的讀者。
    Thumbnail
    在這篇教學文章中,我們將展示如何使用 Node.js 建立一個簡單的伺服器,並解決常見的跨來源資源共享(CORS)問題,確保伺服器能夠接收並處理來自不同來源的資料。
    Thumbnail
    JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
    ※ 補充說明: ※ npm 常用指令: ◦ npm init–y:快速初始化一個新的 Node.js 並建立一個 package.json 文件的命令。 ◦ npm info 套件名稱 version:快速查詢指定 npm 套件的最新版本號。 ◦ npm install套件名稱:用來安裝
    Thumbnail
    Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
    Thumbnail
    支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
    ※ Express 專案步驟筆記清單 Node.js 環境建置核對 新增專案資料夾 設定 package.json npm init -y 設定程式入口為 app.js 安裝 Express:npm install express 設定主程式 app.js 建構應用程式伺服器 設定
    Thumbnail
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
    Thumbnail
    Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息