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

相关推荐
Ai 编码助手4 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
陈燚_重生之又为程序员4 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle4 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻4 小时前
MySQL排序查询
数据库·mysql
萧鼎4 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
^velpro^5 小时前
数据库连接池的创建
java·开发语言·数据库
荒川之神5 小时前
ORACLE _11G_R2_ASM 常用命令
数据库·oracle
IT培训中心-竺老师5 小时前
Oracle 23AI创建示例库
数据库·oracle
小白学大数据5 小时前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
time never ceases5 小时前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle