Как передавать документы из коллекции в Mongodb - PullRequest
1 голос
/ 28 сентября 2019

У меня есть это:

d.db(dbName)
     .collection(dbCollName)
     .find()
     .sort({_id: 1})
     .limit(5000).stream()

это выражение возвращает это:

enter image description here

в основном всеВместо этого я пытаюсь сделать следующее:

   d.db(dbName)
         .collection(dbCollName)
         .find()
         .sort({_id: 1})
         .limit(5000).toArray().then(console.log);

Вместо этого я хочу передавать документы по одному и т. Д., Если это возможно.

1 Ответ

1 голос
/ 28 сентября 2019

Да mongodb cursor, который возвращается db.collection().find(), имеет stream() api для потоковой передачи документов:

const stream = db
  .collection("dbCollName")
  .find()
  .stream();

stream.on("data", function(data) {
  //get streamed documents one by one
  const currentDoc = data;
});

stream.on("error", function(error) {
  console.error("STREAM ERROR::", error.stack);
});

stream.on("end", function() {
  console.info("Streaming docs finished");
  client.close(); //new MongoClient(url, { useNewUrlParser: true });
});

Некоторое время назад написал демонстрационный тест для stream с курсором mongodb node driver, чтобы клонировать коллекцию для достаточного количества набора данных. дополнительная информация

...