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

相关推荐
松涛和鸣31 分钟前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
likangbinlxa1 小时前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
r i c k1 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦2 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL2 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·2 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德3 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫3 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i3 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.3 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql