模式切换
MongoDB 数据库操作
Node.js 中操作 MongoDB 数据库
在 Node.js 中,可以通过 mongodb
官方驱动(mongodb
包)来连接和操作 MongoDB 数据库。mongodb
包提供了与 MongoDB 数据库进行交互的能力,包括连接数据库、执行操作等。
Node.js 中的 mongodb 模块
首先,你需要安装 mongodb
模块:
bash
npm install mongodb
安装完成后,你可以在代码中引入并使用 mongodb
模块来连接数据库。
基本使用示例:
javascript
const { MongoClient } = require('mongodb');
// MongoDB 连接 URI
const url = 'mongodb://localhost:27017';
const dbName = 'test_db';
// 创建一个 MongoClient 实例
const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true });
async function connectDB() {
try {
// 连接数据库
await client.connect();
console.log('连接成功');
const db = client.db(dbName);
const collection = db.collection('users');
// 在此进行数据库操作,例如增、删、查、改
} catch (err) {
console.error('连接失败:', err);
}
}
connectDB();
Node.js 中对 MongoDB 实现增删改查操作
在 MongoDB 中,数据存储在“集合”中,类似于关系型数据库中的“表”。以下是如何在 Node.js 中使用 MongoDB 驱动执行增、删、查、改操作的示例。
插入数据(Insert)
示例:插入一条记录到 users
集合中。
javascript
async function insertData() {
try {
const collection = client.db(dbName).collection('users');
const result = await collection.insertOne({ name: 'John Doe', age: 30 });
console.log('插入成功,插入的 ID:', result.insertedId);
} catch (err) {
console.error('插入失败:', err);
}
}
插入多条记录:
javascript
async function insertMultipleData() {
try {
const collection = client.db(dbName).collection('users');
const result = await collection.insertMany([
{ name: 'Jane Doe', age: 25 },
{ name: 'Sam Smith', age: 40 }
]);
console.log('插入成功,插入的 ID:', result.insertedIds);
} catch (err) {
console.error('插入失败:', err);
}
}
查询数据(Find)
查询所有文档:
javascript
async function findData() {
try {
const collection = client.db(dbName).collection('users');
const users = await collection.find().toArray();
console.log('查询结果:', users);
} catch (err) {
console.error('查询失败:', err);
}
}
查询特定条件的数据:
javascript
async function findUserByName() {
try {
const collection = client.db(dbName).collection('users');
const user = await collection.findOne({ name: 'John Doe' });
console.log('查询结果:', user);
} catch (err) {
console.error('查询失败:', err);
}
}
更新数据(Update)
更新单条数据:
javascript
async function updateData() {
try {
const collection = client.db(dbName).collection('users');
const result = await collection.updateOne(
{ name: 'John Doe' }, // 查找条件
{ $set: { age: 31 } } // 更新内容
);
console.log('更新成功,受影响的文档数量:', result.modifiedCount);
} catch (err) {
console.error('更新失败:', err);
}
}
更新多条数据:
javascript
async function updateMultipleData() {
try {
const collection = client.db(dbName).collection('users');
const result = await collection.updateMany(
{ age: { $lt: 30 } }, // 查找条件
{ $set: { status: 'active' } } // 更新内容
);
console.log('更新成功,受影响的文档数量:', result.modifiedCount);
} catch (err) {
console.error('更新失败:', err);
}
}
删除数据(Delete)
删除单条数据:
javascript
async function deleteData() {
try {
const collection = client.db(dbName).collection('users');
const result = await collection.deleteOne({ name: 'John Doe' });
console.log('删除成功,删除的文档数量:', result.deletedCount);
} catch (err) {
console.error('删除失败:', err);
}
}
删除多条数据:
javascript
async function deleteMultipleData() {
try {
const collection = client.db(dbName).collection('users');
const result = await collection.deleteMany({ age: { $gt: 30 } });
console.log('删除成功,删除的文档数量:', result.deletedCount);
} catch (err) {
console.error('删除失败:', err);
}
}
关闭数据库连接
在操作完成后,可以关闭数据库连接以释放资源。
javascript
async function closeConnection() {
try {
await client.close();
console.log('连接已关闭');
} catch (err) {
console.error('关闭连接失败:', err);
}
}