Consulta de búsqueda de MongoDB que no devuelve todos los valores

Tengo una colección de valores de sensores de mongoDB donde bash encontrar todos los documentos de la colección que se encuentren dentro de un determinado rango de fechas. He leído los documentos y en realidad he implementado el código para encontrar todos los datos. Sin embargo, luego estoy escribiendo todos los documentos en un archivo CSV para poder descargarlos de la web. El problema con el que me estoy topando es que la consulta parece estar buscando todos los datos dentro del intervalo de fechas correcto (imprimí las fechas en ambos lados del servidor y del cliente y ambas coinciden en el intervalo de fechas correcto) sin embargo, el archivo CSV solo devuelve aproximadamente la mitad de los datos (nunca es consistente). Por ejemplo, digamos que estoy consultando mi colección para devolver todos los documentos almacenados entre:

(Jue 09 de mayo 2013 07:57:06 GMT-0400) y (Jueves 14 de mayo 2013 00:40:43 GMT-0400)

Cuando hago clic en el botón de datos de descarga, envía una solicitud al servidor para encontrar todos los documentos dentro de este rango y luego los transmite a un archivo de texto y los entrega al cliente. Imprimo en la consola las fechas del servidor y del cliente, y todo coincide … así que estoy bastante seguro de que la función mongodb find está usando las fechas correctas en su consulta.

Sin embargo, cuando abro el archivo CSV para esta consulta, me da una lista de documentos que abarcan desde (Jue 09 de mayo de 2013 07:57:15 -> la primera fecha en que ingresó gte a la fecha de inicio) … pero solo devuelve Valores a (Sáb 11 de mayo 2013 01:04:09). Esto es alrededor de tres días de datos que parecen faltar en la consulta. Como mis sensores están cargando datos en la colección cada 8 segundos, esto es miles de entradas. ¿Existe algún tipo de límite de datos sobre la cantidad de documentos que se pueden recuperar utilizando la función de búsqueda? El archivo CSV tiene casi 6,850 entradas (entre Thu a Sat) … pero ¿por qué no devolvería la lista completa de valores entre Thu a Tue? He revisado la base de datos y sé que ha almacenado los datos de manera consistente durante este rango de tiempo … así que no creo que ese sea el problema. ¿Alguien tiene alguna idea?

Aquí está el código para mi función de búsqueda:

collection.find({"addr": Number(json.addr), "Time": {$gte:new Date(json.startDate), $lte:new Date(json.endDate)}}, proj, function (err, docs) { if( err || !docs) console.log("No data found"); else { var tempname=json.type+".csv"; var stream=fs.createWriteStream("pages/"+tempname); stream.on('error', function(e){console.error(e);}); docs.each(function(err2, doc) { if (!doc) { console.log("done"); stream.end(); res.writeHead(200, {"Content-Type": "application/json"}); res.write(JSON.stringify({fname:tempname})); res.end(); return; } stream.write(doc.Time+","+doc[json.type]+"\n"); }); } }); 

stream.write() devuelve false cuando el búfer está lleno, por lo que debe verificarlo.

Además, consulte [Escribir archivos grandes con Node.js] para obtener más información.