In Meteor, how do I get a node read stream from a collection's find curser?

In Meteor, on the server side, I want to use the .find() function on a Collection and then get a Node ReadStream interface from the curser that is returned. I've tried using .stream() on the curser as described in the mongoDB docs Seen Here. However I get the error "Object [object Object] has no method 'stream'" So it looks like Meteor collections don't have this option. Is there a way to get a stream from a Meteor Collection's curser?

I am trying to export some data to CSV and I want to pipe the data directly from the collections stream into a CSV parser and then into the response going back to the user. I am able to get the response stream from the Router package we are using, and it's all working except for getting a stream from the collection. Fetching the array from the find to push it into the stream manually would defeat the purpose of a stream since it would put everything in memory. I guess my other option is to use a foreach on the collection and push the rows into the stream one by one, but this seems dirty when I could pipe the stream directly through the parser with a transform on it.

Here's some sample code of what I am trying to do:

response.writeHead(200,{'content-type':'text/csv'});

// Set up a future
var fut = new Future();
var users = Users.find({}).stream();
CSV().from(users)
.to(response)
.on('end', function(count){
    log.verbose('finished csv export');
    response.end();
    fut.ret();
});
return fut.wait();

Have you tried creating a custom function and piping to it?

Though this would only work if Users.find() supported .pipe()(again, only if Users.find inherited from node.js streamble object).

Kind of like

var stream = require('stream')
var util = require('util')

streamreader = function (){
  stream.Writable.call(this)
  this.end = function() {
     console.log(this.data) //this.data contains raw data in a string so do what you need to to make it usable, i.e, do a split on ',' or something or whatever it is you need to make it usable
     db.close()
  })
}

util.inherits(streamreader,stream.Writeable)

stream.prototype._write = function (chunk, encoding, callback) {
  this.data = this.data + chunk.toString('utf8')
  callback()
}


Users.find({}).pipe(new streamReader())