一种高效地检查集合中所有数据的有效方法(nodejs,mongoose)

要解决的问题 我想逐一读取mongodb的一个集合中的所有文档,并将API结果(使用npm request模块)保存在另一个集合($ out)中。

我的努力 我只是试图在async / await中一一取出值,然后一一发送请求

let data = await models.myCollection.find();

并通过迭代语句(如以下代码)一一发送数据数组请求。

for( let i = 0 ; i < data.length ; i++ ) {
  await request(...);
}

馆藏中的文档数量约为1500。

期望 当我如上所述进行操作时,没有错误。 但是我想知道什么是有效的逻辑。 (我想如果有一个样本会更好。)

谢谢。

lyc5748056 回答:一种高效地检查集合中所有数据的有效方法(nodejs,mongoose)

虽然我还没有尝试过这种方法,但是请先验证我的方法并对其进行质疑。我的建议是使用streams。我以前曾用它来转换大型JSON文件中的数据。

您可以在此处参考一些文档:https://mongodb.github.io/node-mongodb-native/2.0/tutorials/streams/

RxJS是一个很好的NPM模块,可以处理对我有用的流。它具有可观察的用户模式,易于掌握。参考:https://github.com/Reactive-Extensions/RxJS

在您的示例中,如果要扩展到数百万或数千条记录,则可以在处理每个文档时就对其进行处理,然后调用API。更好的方法是分批处理请求,您可以获取100或1000的倍数,然后一次调用API以更新所有记录。

本文链接:https://www.f2er.com/3098269.html

大家都在问