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