【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(创建、读取、更新、删除)操作的完整流程。

相关推荐
paopaokaka_luck5 分钟前
基于SpringBoot+Vue的非遗文化传承管理系统(websocket即时通讯、协同过滤算法、支付宝沙盒支付、可分享链接、功能量非常大)
java·数据库·vue.js·spring boot·后端·spring·小程序
小疯仔21 分钟前
navicat导出数据库的表结构
数据库
TOSUN同星22 分钟前
干货分享 | TSMaster DBC编辑器操作指南:功能详解+实战示例
数据库·oracle·编辑器·汽车·软件工程
实习生小黄1 小时前
express 连接在线数据库踩坑
node.js·express
huihui4501 小时前
一天一道Sql题(day01)
数据库
~尼卡~2 小时前
软考(软件设计师)数据库原理:事务管理,备份恢复,并发控制
数据库·软件设计师-软考
八九燕来2 小时前
Django双下划线查询
数据库·django·sqlite
眠りたいです2 小时前
Mysql常用内置函数,复合查询及内外连接
linux·数据库·c++·mysql
paopaokaka_luck3 小时前
智能推荐社交分享小程序(websocket即时通讯、协同过滤算法、时间衰减因子模型、热度得分算法)
数据库·vue.js·spring boot·后端·websocket·小程序
He.ZaoCha3 小时前
函数-1-字符串函数
数据库·sql·mysql