Mongoose:流式聚合JSON数据

Mongoose:流式聚合JSON数据,mongoose,streaming,aggregate,Mongoose,Streaming,Aggregate,正如标题所示,我正在为我的webapp使用Express 目前,我的代码如下所示: API控制器 var mongoose=require('mongoose'); var Doc=mongoose.model('Document'); var sendJSONresponse=函数(res、状态、内容){ 物质状态(状态); res.json(内容); }; //“/api/文档” module.exports.listAllDocuments=函数(请求、回复){ var stream=Do

正如标题所示,我正在为我的webapp使用
Express

目前,我的代码如下所示:

API控制器

var mongoose=require('mongoose');
var Doc=mongoose.model('Document');
var sendJSONresponse=函数(res、状态、内容){
物质状态(状态);
res.json(内容);
};
//“/api/文档”
module.exports.listAllDocuments=函数(请求、回复){
var stream=Doc.find().stream();
stream.on('data',函数(块){
res.write(JSON.stringify(chunk));
}).on('error',函数(err){
log('Error:'+err);
}).on('end',函数(){
res.end();
});
};
而不是使用
var stream=Doc.find().stream(),我希望使用
aggregate()

find()
aggregate()
应该是一个可读的流,对吗

然而,当我简单地用
aggregate()
调用替换
find()
时,它似乎不起作用

它说TypeError:
对象没有方法“stream”
。流式传输聚合的JSON数据的替代方法是什么?

如果在执行前调用
聚合
,则后续的
exec()
返回一个本机游标,然后可以调用该游标以流式传输结果

var stream=Doc.aggregate(pipeline.cursor().exec().stream();
stream.on('data'。。。

不是很直观,但我尝试时它起了作用。

谢谢你的回答。我会尝试。@JohnnyHK。另一个问题:如果我的
aggregate()
调用返回一个文档,那么使用
stream()
没有意义吗?根据我对
stream()
find()的理解
,数据是基于每个文档返回的。是否可以更改此行为?对,它将作为每个数据块的一个结果文档流式处理。没有办法更改此结果文档。谢谢您的确认,@johnyhk,:)。您知道有什么方法可以使Express支持视图渲染中的数据流吗?>_