我们也可以对数据库的数据进行修改,以下实例将 name 为 "Alice" 的 数据:
更新一条数据
const { MongoClient } = require('mongodb'); async function main() { // MongoDB 连接 URI const uri = "mongodb://localhost:27017"; // 请根据你的 MongoDB 服务器地址进行修改 // 创建一个新的 MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { // 连接到 MongoDB 服务器 await client.connect(); console.log("成功连接到服务器"); // 指定数据库 const database = client.db('runoob'); // 使用 createCollection 方法创建集合 const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`集合 ${collectionName} 创建成功`); // 获取集合 const collection = database.collection(collectionName); // 创建多个新文档 const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Charlie", age: 35, address: "Chocolate Factory" } ]; // 插入多个文档到集合 const result = await collection.insertMany(docs); console.log(`${result.insertedCount} 个新文档已创建,ID 为:`); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`文档 ${index + 1}: ${id}`); }); // 指定条件,根据 name 参数更新数据 const filter = { name: "Alice" }; // 搜索条件 const updateDoc = { $set: { age: 28, address: "New Wonderland" }, }; const updateResult = await collection.updateOne(filter, updateDoc); console.log(`${updateResult.matchedCount} 个文档匹配筛选条件`); console.log(`${updateResult.modifiedCount} 个文档已更新`); // 查询更新后的文档 const updatedDocument = await collection.findOne(filter); console.log("更新后的文档:"); console.log(updatedDocument); } finally { // 确保在完成后关闭连接 await client.close(); }} main().catch(console.error);
执行成功后,输出结果如下:
成功连接到服务器
集合 exampleCollection 创建成功
3 个新文档已创建,ID 为:
文档 1: 0
文档 2: 1
文档 3: 2
1 个文档匹配筛选条件
1 个文档已更新
更新后的文档:
{
_id: new ObjectId('6678e1d1f9503dc2e0e2a20b'),
name: 'Alice',
age: 28,
address: 'New Wonderland'
}
如果要更新所有符合条的文档数据可以使用 updateMany():
更新多条数据
const { MongoClient } = require('mongodb'); async function main() { // MongoDB 连接 URI const uri = "mongodb://localhost:27017"; // 请根据你的 MongoDB 服务器地址进行修改 // 创建一个新的 MongoClient const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { // 连接到 MongoDB 服务器 await client.connect(); console.log("成功连接到服务器"); // 指定数据库 const database = client.db('runoob'); // 使用 createCollection 方法创建集合 const collectionName = 'exampleCollection'; await database.createCollection(collectionName); console.log(`集合 ${collectionName} 创建成功`); // 获取集合 const collection = database.collection(collectionName); // 创建多个新文档 const docs = [ { name: "Alice", age: 25, address: "Wonderland" }, { name: "Bob", age: 30, address: "Builderland" }, { name: "Alice", age: 28, address: "Old Wonderland" } ]; // 插入多个文档到集合 const result = await collection.insertMany(docs); console.log(`${result.insertedCount} 个新文档已创建,ID 为:`); Object.keys(result.insertedIds).forEach((id, index) => { console.log(`文档 ${index + 1}: ${id}`); }); // 指定条件,根据 name 参数更新多个文档 const filter = { name: "Alice" }; // 搜索条件 const updateDoc = { $set: { address: "Updated Wonderland" }, }; const updateResult = await collection.updateMany(filter, updateDoc); console.log(`${updateResult.matchedCount} 个文档匹配筛选条件`); console.log(`${updateResult.modifiedCount} 个文档已更新`); // 查询更新后的文档 const updatedDocuments = await collection.find(filter).toArray(); console.log("更新后的文档:"); console.log(updatedDocuments); } finally { // 确保在完成后关闭连接 await client.close(); }} main().catch(console.error);