node.js 操作 MongoDB

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
});

查询数据(find)

查询全部

复制代码
const users = await UserModel.find(); 

条件查询

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

查询一条

复制代码
const user = await UserModel.findOne({ username: "Tom" });
更新数据(Update)
复制代码
await UserModel.updateOne(
  { username: "Tom" },
  { $set: { age: 25 } }
);
删除数据(Delete)
复制代码
await UserModel.deleteOne({ username: "Tom" });

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

相关推荐
SkyWalking中文站9 小时前
BanyanDB 0.11.0:新特性与升级指南
数据库
₍˄·͈༝·͈˄*₎◞ ̑̑码10 小时前
MyBatis操作数据库
数据库·mybatis
刃神太酷啦12 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
丁丁点灯o12 小时前
Oracle中使用外键的场景及不适用外键的情况
数据库·oracle
天天进步201513 小时前
Pixelle-Video 源码解析 #18:声音克隆功能:参考音频如何影响解说效果?
数据库·音视频
FungLeo13 小时前
成为全栈·Node 后端篇·文件上传:R2 / 本地磁盘双实现与签名直传
node.js·文件上传·成为全栈·cloudflare r2·文件去重
不懂的浪漫13 小时前
ToDesk 连接 Linux 后分辨率过低的解决方法
linux·运维·数据库
布莱克60513 小时前
Redis 详解:从核心数据结构到高可用架构
数据库
冰暮流星14 小时前
mysql之左外连接与右外连接
数据库·sql
FungLeo14 小时前
成为全栈·Node 后端篇·认证方案:JWT 还是 Session
node.js·jwt·session·认证方案