node.js new promise 封装使用 MongoDB aggregate
时间: 2024-05-07 18:15:59 浏览: 148
MongoDB使用
以下是一个使用 Node.js 和 MongoDB aggregate 的新 Promise 封装示例:
```javascript
const MongoClient = require('mongodb').MongoClient;
function aggregatePromise(dbUrl, dbName, collectionName, pipeline) {
return new Promise((resolve, reject) => {
MongoClient.connect(dbUrl, { useNewUrlParser: true }, (err, client) => {
if (err) {
reject(err);
}
const db = client.db(dbName);
const collection = db.collection(collectionName);
collection.aggregate(pipeline).toArray((err, result) => {
if (err) {
reject(err);
}
resolve(result);
client.close();
});
});
});
}
```
使用示例:
```javascript
const dbUrl = 'mongodb://localhost:27017';
const dbName = 'test';
const collectionName = 'users';
const pipeline = [
{ $match: { age: { $gte: 18 } } },
{ $group: { _id: '$gender', count: { $sum: 1 } } }
];
aggregatePromise(dbUrl, dbName, collectionName, pipeline)
.then(result => console.log(result))
.catch(err => console.error(err));
```
这个示例使用了 MongoDB 的聚合操作,查询年龄大于等于 18 岁的用户并按性别分组统计人数。我们封装了一个名为 `aggregatePromise` 的函数,它接收四个参数,分别是 MongoDB 连接地址、数据库名、集合名和聚合管道。这个函数返回一个 Promise 对象,可以使用 `.then()` 和 `.catch()` 方法处理异步操作的结果和错误。在函数内部,我们使用了 MongoDB 官方提供的 Node.js 驱动程序,连接到指定的数据库,查询指定集合的数据并返回结果。注意,在最后一行代码中,我们调用了 `client.close()` 方法关闭了连接,以避免资源泄漏。
阅读全文