MongoDB(二) :Mongoose基本操作

更新於 發佈於 閱讀時間約 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);
});
});


留言
avatar-img
留言分享你的想法!
avatar-img
奧莉薇走在成為後端工程師之路上
18會員
137內容數
全端網頁開發專業知識分享
2025/04/26
※ 場景: 即時聊天應用: 設計一個支持多房間功能的即時聊天平台,像 WhatsApp、LINE或Facebook Messenger,提供文字、語音、視訊聊天功能,方便管理群組聊天。 功能亮點:加入特別功能,例如可加入多房間功能、使用者名單、表情符號支持、文件分享或訊息已讀未讀狀態。 展示
2025/04/26
※ 場景: 即時聊天應用: 設計一個支持多房間功能的即時聊天平台,像 WhatsApp、LINE或Facebook Messenger,提供文字、語音、視訊聊天功能,方便管理群組聊天。 功能亮點:加入特別功能,例如可加入多房間功能、使用者名單、表情符號支持、文件分享或訊息已讀未讀狀態。 展示
2025/04/26
※ 先建立基本的express後端服務: 1.建立新資料夾:Socket mkdir socket 2.進入資料夾:Socket cd ​bsocket 3. 安裝 Experss 到專案中 npm init -y //初始化專案,建立 package.json 檔 npm insta
Thumbnail
2025/04/26
※ 先建立基本的express後端服務: 1.建立新資料夾:Socket mkdir socket 2.進入資料夾:Socket cd ​bsocket 3. 安裝 Experss 到專案中 npm init -y //初始化專案,建立 package.json 檔 npm insta
Thumbnail
2025/04/10
※ 什麼是 Socket.io:一個基於傳統 WebSocket API 之上的框架。 ※ Socket.io常用功能: Custom Events:在 Socket.io 中,開發者可以創建自己的事件來處理特定的功能或需求。 Rooms:分組的功能。每個連接的用戶(或稱為 socket)可
Thumbnail
2025/04/10
※ 什麼是 Socket.io:一個基於傳統 WebSocket API 之上的框架。 ※ Socket.io常用功能: Custom Events:在 Socket.io 中,開發者可以創建自己的事件來處理特定的功能或需求。 Rooms:分組的功能。每個連接的用戶(或稱為 socket)可
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
※ 具備三項工具: 編輯器 終端機 瀏覽器 ※ 步驟一:建立資料夾 mkdir mongodb-demo cd mongodb-demo code . ※ 步驟二:初始化,建立package.json npm init -y ※ 步驟三:安裝網頁伺服器 – Express 因為
Thumbnail
※ 具備三項工具: 編輯器 終端機 瀏覽器 ※ 步驟一:建立資料夾 mkdir mongodb-demo cd mongodb-demo code . ※ 步驟二:初始化,建立package.json npm init -y ※ 步驟三:安裝網頁伺服器 – Express 因為
Thumbnail
本篇文章將教你如何在Kubernetes cluster內部署一個MongoDB,包括取得Manifests、建立Volume、部署實務、基本操作和結論。透過操作演示,讓你瞭解在實務上如何成功建立MongoDB,並進行基本操作。
Thumbnail
本篇文章將教你如何在Kubernetes cluster內部署一個MongoDB,包括取得Manifests、建立Volume、部署實務、基本操作和結論。透過操作演示,讓你瞭解在實務上如何成功建立MongoDB,並進行基本操作。
Thumbnail
詳細解說如何在 Mac 上透過 Docker 安裝 MongoDB 社群版。包括 MongoDB Compass 的安裝與配置,以及 MongoDB Shell 的使用方法,為開發者提供 MongoDB 學習資源。
Thumbnail
詳細解說如何在 Mac 上透過 Docker 安裝 MongoDB 社群版。包括 MongoDB Compass 的安裝與配置,以及 MongoDB Shell 的使用方法,為開發者提供 MongoDB 學習資源。
Thumbnail
建立一個屬於自己喜愛球員的清單。 ※ 專案開發環境 架設 Node.js 伺服器。 用 Express.js 進行全端開發。 用 MongoDB 資料庫。 ※ 專案開發技術 使用 Express handlebars,為球員清單做出佈局和局部樣板
Thumbnail
建立一個屬於自己喜愛球員的清單。 ※ 專案開發環境 架設 Node.js 伺服器。 用 Express.js 進行全端開發。 用 MongoDB 資料庫。 ※ 專案開發技術 使用 Express handlebars,為球員清單做出佈局和局部樣板
Thumbnail
為了做登入log紀錄,練習mongoDB來存放log資料,這邊就來紀錄 Laravel 配置mongoDB的實作,而原本我的side project是練習搭建docker開發環境,故這邊會以dockerfile來設定跟紀錄踩坑問題。
Thumbnail
為了做登入log紀錄,練習mongoDB來存放log資料,這邊就來紀錄 Laravel 配置mongoDB的實作,而原本我的side project是練習搭建docker開發環境,故這邊會以dockerfile來設定跟紀錄踩坑問題。
Thumbnail
MySQL 應用到 URL Shortener 上
Thumbnail
MySQL 應用到 URL Shortener 上
Thumbnail
我們在「【資料庫寶典】什麼是NoSQL?能吃嗎?」有談到一些NoSQL的特性,雖然本質上有所差異,但兩方技術發展的產品也都開始互相支援了,比如說MongoDB後來也發展出類SQL語法讓熟悉SQL的開發者可以降低進入門檻,而SQL、postgresql…等也紛紛納入一些NoSQL的元素,雙方都有開始接
Thumbnail
我們在「【資料庫寶典】什麼是NoSQL?能吃嗎?」有談到一些NoSQL的特性,雖然本質上有所差異,但兩方技術發展的產品也都開始互相支援了,比如說MongoDB後來也發展出類SQL語法讓熟悉SQL的開發者可以降低進入門檻,而SQL、postgresql…等也紛紛納入一些NoSQL的元素,雙方都有開始接
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News