我正在使用猫鼬查询一个文档,并且希望将其通过管道传输到流中。我的数据库有多个帐户文档。如果我只是:
db.Accounts.findOne({}).exec(function(err, data){
...
});
它正确返回单个文档。然而,
var mongooseStream = db.Accounts.findOne({}).stream({
transform: JSON.stringify
}),
writeStream = require('fs').createWriteStream('accounts');
mongooseStream.pipe(writeStream);
上面这个新创建的writeStream在其中列出了每个帐户。
最后,如果我
.find({}).limit(1).stream()
,它将仅返回流中的一个文档。关于为什么流
findOne({})
无法正常运行的任何想法?谢谢! 最佳答案
您尚未对findOne()
设置任何条件,并且正在对其进行流式处理。因此,它将连续执行findOne()
并将其提供给流。 findOne()
的用法如下:
SchemaModel.findOne({
//conditions
},function(){
//this is callback
});
据我了解,您正在尝试做的是,您正在尝试仅流式处理集合中的一个文档。为此,
findOne
并不是您所需要的,因为在定义一组条件时,findOne
用于直接从数据库中以Javascript对象的形式直接提取一个文档。阅读:
Mongoose Queries
db.Collection.findOne()
How to use mongoose findOne
关于javascript - Mongoose findOne.stream()返回多个文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30719102/