Node.js 操作 MongoDB

目錄

Node.js 操作 MongoDB

一、什么是 MongoDB?

二、MongoDB 的功能概覽

三、MongoDB 的安裝與啟動

安裝 MongoDB(以本地安裝為例)

啟動 MongoDB

四、Node.js 如何連接 MongoDB?

使用 Mongoose ODM 工具

建立連接

五、定義數據模型(Model)

六、Node.js 操作 MongoDB(CRUD)

1? 添加數據(Create)

2? 查詢數據(Read)

3? 更新數據(Update)

4? 刪除數據(Delete)

七、使用可視化工具查看數據庫

八、實戰推薦結構示例

總結


Node.js 操作 MongoDB


一、什么是 MongoDB?

MongoDB?是一個開源的?NoSQL?文檔型數據庫,它使用類似 JSON 的 BSON 格式存儲數據,每一條記錄稱為一個“文檔(Document)”,多個文檔組成“集合(Collection)”。

特點:

  • 非關系型:無需預定義表結構(靈活)
  • 文檔存儲:結構類 JSON,支持嵌套
  • 高性能、高可擴展性
  • 支持索引、聚合、地理位置查詢等強大功能

二、MongoDB 的功能概覽

  • 文檔式結構(BSON)
  • 動態模式:可以存不同結構的數據
  • 高可用性與分片機制:適用于大數據量場景
  • 內置副本集:數據安全
  • 豐富的查詢語法:支持條件、排序、分頁、聚合等

三、MongoDB 的安裝與啟動

安裝 MongoDB(以本地安裝為例)

  • Windows/macOS/Linux 可從官網下載:Download MongoDB Community Server | MongoDB
  • 也可使用 Docker 安裝:
docker run -d -p 27017:27017 --name mongo mongo

啟動 MongoDB

  • 本地方式
mongod --dbpath 數據文件路徑
  • 默認監聽地址為:mongodb://127.0.0.1:27017

四、Node.js 如何連接 MongoDB?

使用 Mongoose ODM 工具

npm install mongoose

建立連接

// db.js
const mongoose = require("mongoose");mongoose.connect("mongodb://127.0.0.1:27017/mydb").then(() => console.log("MongoDB 連接成功")).catch((err) => console.error("MongoDB 連接失敗", err));

說明:

  • 127.0.0.1:27017?是 MongoDB 默認端口
  • mydb?是數據庫名,不存在會自動創建

五、定義數據模型(Model)

// model/UserModel.js
const mongoose = require("mongoose");const UserSchema = new mongoose.Schema({username: String,password: String,age: Number
});const UserModel = mongoose.model("user", UserSchema); // 對應集合 users
module.exports = UserModel;

六、Node.js 操作 MongoDB(CRUD)

所有操作需在?await connect()?后使用,或包裹在?async?函數中。

1? 添加數據(Create)

await UserModel.create({username: "Tom",password: "123456",age: 20
});

2? 查詢數據(Read)

查詢全部

const users = await UserModel.find(); 

條件查詢

const users = await UserModel.find({ age: { $gte: 18 } });

查詢一條

const user = await UserModel.findOne({ username: "Tom" });

3? 更新數據(Update)

await UserModel.updateOne({ username: "Tom" },{ $set: { age: 25 } }
);

4? 刪除數據(Delete)

await UserModel.deleteOne({ username: "Tom" });

七、使用可視化工具查看數據庫

推薦以下圖形化 MongoDB 管理工具:

工具說明
MongoDB Compass官方 GUI 工具,功能強大,免費
Robo 3T輕量 GUI,常用于開發調試
NoSQLBooster支持 MongoShell 腳本和圖表
MongoDB Atlas云端托管 + 可視化操作

使用方式:連接?mongodb://127.0.0.1:27017/mydb,即可看到所有集合與數據。


八、實戰推薦結構示例

project/
├── db.js               # 數據庫連接配置
├── model/
│   └── UserModel.js    # 用戶模型
├── index.js            # 入口文件(包含增刪改查)

index.js 示例:

const connect = require('./db');
const UserModel = require('./model/UserModel');async function main() {await connect();// 添加await UserModel.create({ username: "Alice", password: "123", age: 22 });// 查詢const users = await UserModel.find();console.log(users);// 更新await UserModel.updateOne({ username: "Alice" }, { age: 23 });// 刪除await UserModel.deleteOne({ username: "Alice" });process.exit();
}main();

總結

項目內容
數據庫MongoDB(非關系型,文檔型)
Node連接方式mongoose.connect()
操作方式createfindupdateOnedeleteOne
工具推薦MongoDB Compass、Robo 3T、NoSQLBooster 等
數據結構文檔(Document)、集合(Collection)
常見端口默認?27017

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917306.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917306.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917306.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

先學Python還是c++?

選擇先學Python還是C,取決于你的學習目標、應用場景和職業規劃。以下是兩者的對比分析和建議,幫助你做出更適合自己的選擇:一、核心差異對比維度PythonC學習曲線簡單易上手(語法接近自然語言)復雜(需理解指…

Trae + Notion MCP:將你的Notion數據庫升級為智能對話機器人

前言 Notion作為一款功能強大的信息管理工具,被廣泛用于項目跟蹤、知識庫構建和數據整理。然而,隨著數據量的增長,我們常常會發現自己陷入了重復和繁瑣的操作中。比如,為了找到符合特定條件的幾條數據,需要在龐大的數…

【iOS】retain/release底層實現原理

文章目錄前言前情知識retain和release的實現原理(MRC手動管理)retain(MRC手動管理)retain源碼內聯函數rootRetain源碼相關的sidetable_tryRetain()方法retain底層工作流程總結releaserelease源碼內聯函數rootRelease源碼小結前言 …

文件同步神器-rsync命令講解

rsync 是一個強大的文件同步與傳輸工具,廣泛用于本地或遠程服務器之間的高效文件備份、鏡像或同步。其核心優勢是通過增量傳輸?(僅傳輸文件差異部分)和壓縮減少數據傳輸量,同時支持保留文件元數據(如權限、時間戳、所…

Rust: 工具鏈版本更新

遇到 cargo build --release 錯誤,比如,當前 Rust 工具鏈版本(1.78.0)低于依賴項所需的最低版本(部分依賴要求 ≥1.82.0)。以下是系統化的解決方案: 🔧 一、升級 Rust 工具鏈&#x…

Prompt-to-Prompt| 修改Attention會有“反向傳播”或梯度計算?

需要注意的幾個問題:額外計算開銷:Cross-Attention Control原因:Prompt-to-Prompt的編輯方法需要動態干預交叉注意力(Cross-Attention)層的權重,這會引入額外的計算和顯存占用:需要緩存注意力矩…

電商API接口的優勢、數據采集方法及功能說明

一、電商API接口的核心優勢1. 高效性與準確性數據采集效率:API通過標準化參數(如商品ID、類目)直接獲取結構化數據(JSON/XML),無需解析HTML,減少誤差。例如,采集1000條商品信息&…

iOS企業簽名掉簽,iOS企業簽名掉簽了怎么辦?

不能上架到App Store的iOS應用 ,幾乎每一個開發者的選擇都是通過iOS簽名這種內測渠道來完成APP的上架任務,最常用的就是企業簽名、超級簽名以及TF上架,其中最受歡迎的當屬于企業簽名了。不過企業簽名會出現掉簽的現象,那么企業簽名…

存儲成本深度優化:冷熱分層與生命周期管理——從視頻平臺年省200萬實踐解析智能存儲架構

一、冷熱分層:存儲成本優化的核心邏輯1.1 數據訪問的“二八定律”據行業統計,80%的訪問集中在20%的熱數據上,而超過90天的歷史數據訪問頻率下降70%以上。某視頻平臺存儲超10PB媒體文件,未分層前年存儲成本高達680萬元,…

Java設計模式之《備忘錄模式》

目錄 1. 概念 1.1、定義 1.2、適用場景 2、角色劃分 3、實現 1、Originator(發起人) 2、Memento(備忘錄) 3、Caretaker(管理者) 4、使用示例 4、優缺點 4.1、優點 4.2、缺點 前言 備忘錄模式是…

SpringBoot 多環境配置

在實際項目開發中,不同環境往往有不同的配置需求: 開發環境(dev):本地調試,連接測試數據庫;測試環境(test):接口聯調,接近真實場景;生…

延凡智慧醫院數字孿生平臺

延凡智慧醫院數字孿生平臺是延凡科技依托物聯網、數字孿生、AI 算法及邊緣計算技術打造的醫療場景全要素數字化解決方案,通過構建醫院物理實體與虛擬空間的實時映射,實現醫療資源優化、運營效率提升及患者體驗升級。一、平臺價值(一&#xff…

談談WebAssembly、PWA、Web Workers的作用和場景

WebAssembly、PWA 和 Web Workers 是現代 Web 開發中提升性能、擴展能力的重要技術,各自解決不同場景的問題,以下結合實際使用經驗分析:一、WebAssembly(Wasm):高性能代碼執行作用:WebAssembly …

嵌入式第十八課!!數據結構篇入門及單向鏈表

在前幾章對C語言的學習中,我們學到了:基本的C語法和簡單算法面向過程的編程思想而在數據結構這一篇章,我們將要學習:常用的數據存儲結構算法面向對象的編程思想數據結構在正式開始學習之前,我們先來了解一下什么是數據…

win10任務欄出問題了,原來是wincompressbar導致的

問題描述兄弟們客戶說自己電腦現在有問題了,任務欄顯示的都不對,和之前的都不一樣,現在使用起來非常難受,我們來看一下,這到底是什么問題吧!到客戶現場,查看發現,客戶桌面系統最底下…

FFmpegHandler 功能解析,C語言程序化設計與C++面向對象設計的核心差異

FFmpegHandler 功能解析 本文件記錄了關于 FFmpegHandler 類中核心函數工作流程的詳細解釋。Q: FFmpeg逐幀解碼,FFmpegHandler::openVideo 和 FFmpegHandler::readAVFrame 這兩個函數都分別做了什么? A: 可以把整個過程想象成“準備播放一部電影”&#…

Codeforces Round 1039 (Div. 2) A-C

A. Recycling Center題目大意 給你n個垃圾袋,每個垃圾袋有一個重量 在每秒鐘,你可以選擇一個垃圾袋,如果他的重量小于等于c,那么你可以不花費硬幣丟掉它 當你丟掉一個垃圾袋后,其他垃圾袋在這一秒重量會翻倍 問最少花費…

【設計模式】 原則

單一職責原則 對于一個類而言,有且僅有一個引起他變化的原因或者說,一個類只負責一個職責 如果一個類承擔的職責過多,那么這些職責放在一起耦合度太高了,一個職責的變化可能會影響這個類其他職責的能力。 所以我們在做軟件設計的時…

windows11右鍵菜單新增項增加drawio文件,使用draw.io

目錄1.新建空白模板2.建立注冊表文件1.新建空白模板 這里我們的模板文件路徑為 D:\Software\drawio\template.drawio 2.建立注冊表文件 首先新建一個.txt文件,我這里取名為menulize.txt,然后將下面的內容復制到.txt文件中 Windows Registry Editor Ver…

解鎖網頁魔法:零基礎HTML通關秘籍

文章目錄**解鎖網頁魔法:零基礎HTML通關秘籍**HTML 基礎目標HTML 結構認識 HTML 標簽HTML 文件基本結構標簽層次結構快速生成代碼框架HTML 常見標簽注釋標簽注釋的原則標題標簽: h1-h6段落標簽: p換行標簽:br綜合案例: 展示博客超鏈接標簽: a表格標簽**基…