【Node.js从基础到高级运用】十、Node.js中的数据库操作

简介

MongoDB 是一种非关系型数据库(NoSQL),它以其灵活的文档结构、高性能、高可用性、易扩展性而闻名。对于许多Node.js开发人员来说,MongoDB 是后端存储的首选解决方案,因为它可以存储的 JSON-like 文档与 JavaScript 对象的结构非常相似,这使得在 Node.js 应用程序中使用 MongoDB 变得非常直观。

安装 MongoDB

安装Mongodb参考https://blog.csdn.net/muguli2008/article/details/80591256

下载4.x版本用来学习,其他不再赘述。

安装完成,并添加系统环境变量之后:

  • 打开cmd输入mongod -version
  • 成功后,输入mongod挂载mongodb

开始使用

在你的项目根目录下运行以下命令安装 MongoDB 驱动

bash 复制代码
npm install mongodb@4.4.0 -S

编写测试代码

创建一个新的 Node.js 文件,比如 index.js,并导入 mongodb 模块。

javascript 复制代码
const { MongoClient } = require('mongodb');

// MongoDB 连接 URL,通常以 mongodb:// 开头
// 这里假设 MongoDB 运行在本地机器上,默认端口 27017
// 并尝试连接到一个名为 mydb 的数据库
const url = 'mongodb://localhost:27017';
const dbName = 'mydb';

async function main() {
    // 创建 MongoClient 对象
    const client = new MongoClient(url);

    try {
        // 使用 connect 方法连接到服务器
        await client.connect();
        console.log("Connected successfully to server");

        // 选择数据库
        const db = client.db(dbName);

        // 在这里添加你的数据库操作
        // 例如,插入一个文档到某个集合
        const collection = db.collection('documents');
        const insertResult = await collection.insertOne({a: 1});
        console.log('Insert result:', insertResult);

    } finally {
        // 确保在程序结束时关闭数据库连接
        await client.close();
    }
}

main().catch(console.error);

查看数据库

使用 MongoDB 客户端(MongoDB Shell)

回到开启mogo的CMD界面,输入show dbs

可以看到名为 mydb 的数据库已经创建成功!

接着输入use mydb进入该数据库中,再次输入show collections查看我们创建的集合:

在代码中通过const insertResult = await collection.insertOne({a: 1});插入了一条数据,

通过db.documents.find()命令查看 documents 集合中的所有文档:

通过 Node.js 应用程序

如果你希望通过 Node.js 应用程序查询 documents 集合中的数据,可以使用以下代码示例:

javascript 复制代码
const { MongoClient } = require('mongodb');
const url = 'mongodb://localhost:27017';
const dbName = 'mydb';

async function findDocuments() {
    const client = new MongoClient(url);

    try {
        await client.connect();
        console.log("Connected successfully to server");

        const db = client.db(dbName);
        const collection = db.collection('documents');

        // 查找集合中的所有文档
        const findResult = await collection.find({}).toArray();
        console.log('Found documents =>', findResult);

    } finally {
        await client.close();
    }
}

findDocuments().catch(console.error);

完整的CRUD(创建、读取、更新、删除)示例

javascript 复制代码
const { MongoClient } = require('mongodb');
const url = 'mongodb://localhost:27017';
const dbName = 'mydb';

async function main() {
    const client = new MongoClient(url);
    try {
        await client.connect();
        console.log("Connected correctly to server");
        const db = client.db(dbName);
        const collection = db.collection('documents');

        // C: 创建并插入文档
        await collection.insertMany([{ a: 1 }, { a: 2 }, { a: 3 }]);
        console.log("Inserted 3 documents into the collection");

        // R: 读取文档
        const findResult = await collection.find({}).toArray();
        console.log('Found documents:', findResult);

        // U: 更新文档
        const updateResult = await collection.updateOne({ a: 2 }, { $set: { b: 1 } });
        console.log('Updated document:', updateResult);

        // D: 删除文档
        const deleteResult = await collection.deleteMany({ a: 3 });
        console.log('Deleted documents:', deleteResult);
        
		 // 删除该文档所有数据
        const deleteResultAll = await collection.deleteMany({});
        console.log(`Deleted ${deleteResultAll.deletedCount} documents`);
    } finally {
        await client.close();
    }
}

main().catch(console.error);

解释

连接到数据库:首先,创建 MongoClient 并连接到本地运行的 MongoDB 实例。

C (创建):使用 insertMany 方法插入多个文档到 documents 集合中。这是创建操作的示例。

R (读取):使用 find 方法查找集合中的所有文档并将它们转换为数组。这是读取操作的示例。

U (更新):使用 updateOne 方法更新第一个匹配 { a: 2 } 查询的文档,通过 $set 操作符添加新的字段。这是更新操作的示例。

D (删除):使用 deleteMany 方法删除所有匹配 { a: 3 } 查询的文档。这是删除操作的示例。

关闭数据库连接:操作完成后,确保关闭客户端连接。

总结

在本篇博客中,我们介绍了如何在 Node.js 应用程序中连接并操作 MongoDB 数据库。我们首先讨论了 MongoDB 的基本概念,然后详细介绍了如何在 Windows 环境下安装和配置 MongoDB。接下来,我们探讨了如何在 Node.js 中使用 MongoDB 驱动来连接数据库,包括如何安装必要的 npm 包。

我们通过实际代码示例演示了如何连接到 MongoDB 数据库、如何在数据库中创建和删除数据、以及如何查询数据库中的数据。这些示例包括了从建立数据库连接到执行 CRUD(创建、读取、更新、删除)操作的完整流程。

相关推荐
heartbeat..4 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
麦聪聊数据6 小时前
MySQL并发与锁:从“防止超卖”到排查“死锁”
数据库·sql·mysql
AC赳赳老秦7 小时前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek
YMatrix 官方技术社区7 小时前
YMatrix 存储引擎解密:MARS3 存储引擎如何超越传统行存、列存实现“时序+分析“场景性能大幅提升?
开发语言·数据库·时序数据库·数据库架构·智慧工厂·存储引擎·ymatrix
辞砚技术录8 小时前
MySQL面试题——索引2nd
数据库·mysql·面试
linweidong8 小时前
C++thread pool(线程池)设计应关注哪些扩展性问题?
java·数据库·c++
欧亚学术9 小时前
突发!刚刚新增17本期刊被剔除!
数据库·论文·sci·期刊·博士·scopus·发表
黑白极客10 小时前
怎么给字符串字段加索引?日志系统 一条更新语句是怎么执行的
java·数据库·sql·mysql·引擎
大厂技术总监下海10 小时前
数据湖加速、实时数仓、统一查询层:Apache Doris 如何成为现代数据架构的“高性能中枢”?
大数据·数据库·算法·apache
LeenixP10 小时前
RK3576-Debian12删除userdata分区
linux·运维·服务器·数据库·debian·开发板