Mongoose findOne.stream()返回多个文档

时间:2015-06-08 21:07:09

标签: javascript node.js mongodb mongoose

我正在使用mongoose查询一个文档,我想将它传递给一个流。我的数据库有多个帐户文档。如果我只是:

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({})没有按预期工作的任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

你没有在findOne()上添加任何条件,而且你正在流式传输它。因此,它会持续执行findOne(),然后将其提供给流。 findOne()的用法如下:

SchemaModel.findOne({
     //conditions
},function(){
     //this is callback
});

根据我的理解,您尝试做的是,您只尝试流式传输集合中的一个文档。对于我说,findOne不是你需要的,因为findOne用于在定义一组条件时直接以数据库中的Javascript对象形式提取一个文档。

阅读:

Mongoose Queries

db.Collection.findOne()

How to use mongoose findOne