目錄
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() |
操作方式 | create 、find 、updateOne 、deleteOne |
工具推薦 | MongoDB Compass、Robo 3T、NoSQLBooster 等 |
數據結構 | 文檔(Document)、集合(Collection) |
常見端口 | 默認?27017 |
?