首先,需要安装mongodb驱动:
npm install mongodb
接着,可以创建一个连接到MongoDB的客户端:
const { MongoClient } = require('mongodb');
const url = 'mongodb://localhost:27017'; // MongoDB服务地址
const dbName = 'mydatabase'; // 数据库名称
const client = new MongoClient(url);
async function main() {
await client.connect();
console.log('Connected successfully to server');
const db = client.db(dbName);
// 等待在这里执行CRUD操作
client.close();
}
main().catch(console.error);
基础版
1. 创建(Create)
插入单条数据
async function createDocument(collectionName, doc) {
const collection = db.collection(collectionName);
const result = await collection.insertOne(doc);
console.log(result);
}
// 使用示例
createDocument('users', { name: 'Tom', age: 25 });
插入多条数据
async function createMultipleDocuments(collectionName, docs) {
const collection = db.collection(collectionName);
const result = await collection.insertMany(docs);
console.log(result);
}
// 使用示例
createMultipleDocuments('users', [
{ name: 'Alice', age: 23 },
{ name: 'Bob', age: 27 }
]);
2. 读取(Read)
查询单条数据
async function findOneDocument(collectionName, query) {
const collection = db.collection(collectionName);
const doc = await collection.findOne(query);
console.log(doc);
}
// 使用示例
findOneDocument('users', { name: 'Tom' });
查询多条数据
async function findMultipleDocuments(collectionName, query) {
const collection = db.collection(collectionName);
const docs = await collection.find(query).toArray();
console.log(docs);
}
// 使用示例
findMultipleDocuments('users', { age: { $gt: 20 } });
3. 更新(Update)
更新单条数据
async function updateOneDocument(collectionName, filter, updateDoc) {
const collection = db.collection(collectionName);
const result = await collection.updateOne(filter, { $set: updateDoc });
console.log(result);
}
// 使用示例
updateOneDocument('users', { name: 'Tom' }, { age: 28 });
更新多条数据
async function updateMultipleDocuments(collectionName, filter, updateDoc) {
const collection = db.collection(collectionName);
const result = await collection.updateMany(filter, { $set: updateDoc });
console.log(result);
}
// 使用示例
updateMultipleDocuments('users', { age: { $lt: 30 } }, { active: true });
4. 删除(Delete)
删除单条数据
async function deleteOneDocument(collectionName, query) {
const collection = db.collection(collectionName);
const result = await collection.deleteOne(query);
console.log(result);
}
// 使用示例
deleteOneDocument('users', { name: 'Tom' });
删除多条数据
async function deleteMultipleDocuments(collectionName, query) {
const collection = db.collection(collectionName);
const result = await collection.deleteMany(query);
console.log(result);
}
// 使用示例
deleteMultipleDocuments('users', { active: true });
完成上面的操作后,确保关闭数据库连接。
client.close();
在使用以上代码时,请通过替换collectionName、query和updateDoc的值以适配你的实际需求。
这个指南涵盖了在Node.js中使用MongoDB进行基本的CRUD操作的代码示例。在实际应用开发中,你可能需要根据实际业务逻辑对其进行更复杂的操作和封装。
在MongoDB中执行更高级的查询和修改操作通常涉及更复杂的查询条件、聚合操作以及对更新操作的细致控制。我将在此为您提供一些进阶使用示例。
进阶版
高级查询
查询时可以使用更复杂的操作符,比如$and, $or, $in, $not, $type, $regex等来构建复杂的查询语句。
使用逻辑运算符
async function findWithLogicalOperators(collectionName) {
const collection = db.collection(collectionName);
// 查询年龄大于20并且名字以'A'开头的用户
const query = { $and: [{ age: { $gt: 20 } }, { name: { $regex: /^A/ } }] };
const docs = await collection.find(query).toArray();
console.log(docs);
}
findWithLogicalOperators('users');
使用数组查询
async function findUsersWithSpecificInterests(collectionName) {
const collection = db.collection(collectionName);
// 查询兴趣中包含阅读的用户
const query = { interests: "阅读" };
const docs = await collection.find(query).toArray();
console.log(docs);
}
findUsersWithSpecificInterests('users');
使用聚合框架(Aggregation Framework)
MongoDB提供的聚合框架可以执行更复杂的数据处理任务,比如分组、排序、计算字段等。
分组和计算平均年龄
async function averageAgeByInterest(collectionName) {
const collection = db.collection(collectionName);
const pipeline = [
{ $unwind: "$interests" },
{ $group: { _id: "$interests", averageAge: { $avg: "$age" } } },
{ $sort: { averageAge: -1 } }
];
const result = await collection.aggregate(pipeline).toArray();
console.log(result);
}
averageAgeByInterest('users');
高级更新
更新操作可以包括修改字段、添加新字段以及使用更新操作符如$inc, $push等。
更新并同时增加新字段
async function updateAndAddField(collectionName, userId, incrementValue) {
const collection = db.collection(collectionName);
const filter = { _id: userId };
const updateDoc = {
$set: { lastActive: new Date() },
$inc: { loginCount: incrementValue }
};
const result = await collection.updateOne(filter, updateDoc);
console.log(result);
}
updateAndAddField('users', "someUserId", 1);
向数组中添加元素
async function addInterestToUser(collectionName, userId, newInterest) {
const collection = db.collection(collectionName);
const filter = { _id: userId };
const updateDoc = { $push: { interests: newInterest } };
const result = await collection.updateOne(filter, updateDoc);
console.log(result);
}
addInterestToUser('users', "someUserId", "游泳");
删除操作
删除操作同样可以是条件化的,你可以根据条件批量删除记录。
删除年龄在一定范围内的用户
async function deleteUserByAgeRange(collectionName, minAge, maxAge) {
const collection = db.collection(collectionName);
const query = { age: { $gte: minAge, $lte: maxAge } };
const result = await collection.deleteMany(query);
console.log(result);
}
deleteUserByAgeRange('users', 18, 30);
以上就是Node.js中操作MongoDB的CRUD操作指南的详细内容,更多关于Node.js操作MongoDB的CRUD的资料请关注脚本之家其它相关文章!
来源链接:https://www.jb51.net/javascript/312839v7z.htm
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
















暂无评论内容