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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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表格标签**基…