node.js - 一种高效地逐一检查集合中所有数据的方法(nodejs、mongoose)

标签 node.js mongodb mongoose

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

我的努力 我只是尝试在async/await中一一取出值并一一发送请求

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

并通过迭代语句将数据数组请求一一发送,如下代码。

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

馆藏文献数量约1500篇。

期望 当我按照上面的步骤进行时,没有错误。 但我想知道什么是有效的逻辑。 (我认为如果有 sample 会更好。)

谢谢。

最佳答案

虽然我之前没有尝试过这种方法,但请验证我的方法并提出质疑。我的建议是使用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 一次来更新所有记录。

关于node.js - 一种高效地逐一检查集合中所有数据的方法(nodejs、mongoose),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58869278/

相关文章:

node.js - MongoDB 按字段返回所有文档而不重复?

javascript - Mongo只返回数组匹配查询的元素

node.js - MongoDB 不会更新 testcafe 测试

node.js - 显示 Mongoose 查询到 pug 的结果

javascript - Passport 没 react ?

node.js - Mongoose 正在从数组中的嵌入文档中删除空对象

node.js - 使用 node 启动应用程序但不是 yarn 或 npm

node.js - 我收到错误 : fs. js:36 } = primordials; ^ ReferenceError: 未定义原语

javascript - NodeJS 'http' 对象应该有一个名为 get() 的方法,但它在哪里?

javascript - 如何将内部回调的结果传递到其父函数中?