要按组分组、计数并从MongoDB查询中流式传输个别结果,您可以使用聚合管道和MongoDB的流式传输功能。下面是一个示例代码,使用Node.js和MongoDB的官方驱动程序来执行此操作:
const { MongoClient } = require('mongodb');
async function run() {
const uri = 'mongodb://localhost:27017';
const client = new MongoClient(uri);
try {
await client.connect();
const pipeline = [
// 添加聚合阶段,按组分组并计数
{
$group: {
_id: '$groupField',
count: { $sum: 1 }
}
},
// 添加排序阶段(可选)
{
$sort: {
count: -1
}
}
];
const cursor = client.db('yourDatabase').collection('yourCollection')
.aggregate(pipeline, { batchSize: 1000 }) // 设置合适的batchSize以提高性能
// 遍历结果集并处理每个文档
await cursor.forEach(document => {
// 处理每个文档,例如打印结果
console.log(document);
});
} finally {
// 关闭数据库连接
await client.close();
}
}
run().catch(console.error);
上述代码将通过聚合管道将查询结果按groupField
字段进行分组,并计算每个组的文档数量。您可以根据需要修改聚合管道的阶段。
然后,使用forEach
方法对结果集进行遍历,并处理每个文档。在这个示例中,只是简单地打印出每个文档。
请确保将mongodb
包安装为依赖项,通过npm install mongodb
命令进行安装。
下一篇:按组分组,转换-恢复到原始表