在Node.js中连接MongoDB并进行数据库操作是一个常见的任务。以下是如何使用Node.js来连接MongoDB,并执行一些基本的数据库操作(如创建数据库、插入文档、查询文档、更新文档和删除文档)的步骤和代码示例。
1. 安装MongoDB驱动
首先,你需要安装MongoDB的Node.js驱动。如果你使用的是淘宝的npm镜像(cnpm),可以使用以下命令安装:
cnpm install mongodb
2. 连接到MongoDB
使用MongoClient
对象连接到MongoDB数据库。以下是连接的基本代码示例:
const {
MongoClient } = require('mongodb');
async function main() {
// MongoDB 连接 URI
const uri = "mongodb://localhost:27017";
// 创建一个新的 MongoClient
const client = new MongoClient(uri, {
useNewUrlParser: true, useUnifiedTopology: true });
try {
// 连接到 MongoDB 服务器
await client.connect();
console.log("成功连接到服务器");
// 指定数据库
const database = client.db('runoob');
// 这里可以执行数据库操作
} finally {
// 确保在完成后关闭连接
await client.close();
}
}
main().catch(console.error);
3. 创建数据库和集合
在MongoDB中,数据库和集合(类似于关系数据库中的表)是在需要时自动创建的。你可以通过执行插入操作来创建它们:
const collection = database.collection('exampleCollection');
const doc = {
name: "Example", type: "Test" };
const result = await collection.insertOne(doc);
console.log(`新文档已创建,ID 为: ${
result.insertedId}`);
4. 查询文档
以下是如何查询集合中的文档:
const findResult = await collection.find({
}).toArray();
console.log('查询到的文档:', findResult);
5. 更新文档
以下是如何更新集合中的文档:
const updateResult = await collection.updateOne({
name: "Example" }, {
$set: {
type: "Updated" } });
console.log(`更新的文档数量: ${
updateResult.matchedCount}`);
6. 删除文档
以下是如何删除集合中的文档:
const deleteResult = await collection.deleteOne({
name: "Example" });
console.log(`删除的文档数量: ${
deleteResult.deletedCount}`);
完整代码示例
结合以上步骤,以下是一个完整的代码示例,展示了如何连接到MongoDB,创建数据库和集合,插入、查询、更新和删除文档:
const {
MongoClient } = require('mongodb');
async function main() {
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri, {
useNewUrlParser: true, useUnifiedTopology: true });
try {
await client.connect();
console.log("成功连接到服务器");
const database = client.db('runoob');
const collection = database.collection('exampleCollection');
// 插入文档
const doc = {
name: "Example", type: "Test" };
const insertResult = await collection.insertOne(doc);
console.log(`新文档已创建,ID 为: ${
insertResult.insertedId}`);
// 查询文档
const findResult = await collection.find({
}).toArray();
console.log('查询到的文档:', findResult);
// 更新文档
const updateResult = await collection.updateOne({
name: "Example" }, {
$set: {
type: "Updated" } });
console.log(`更新的文档数量: ${
updateResult.matchedCount}`);
// 删除文档
const deleteResult = await collection.deleteOne({
name: "Example" });
console.log(`删除的文档数量: ${
deleteResult.deletedCount}`);
} finally {
await client.close();
}
}
main().catch(console.error);