【问题标题】:mongodb .toArray vs .each (blocking vs async?)mongodb .toArray vs .each(阻塞 vs 异步?)
【发布时间】:2016-12-12 05:47:12
【问题描述】:

我的问题是以下哪个是阻塞的,因此不推荐用于 nodejs

  1. db.collection("allinfo").find({somekey: "someval"}).each(function(err, item){ //we get each item.... });
  2. db.collection("allinfo").find({somekey: "someval"}).toArray(function(err, allitems){ //we get whole array.... });

应该首选哪一个以及何时?

【问题讨论】:

    标签: javascript node.js mongodb performance loops


    【解决方案1】:

    所以,这里真正的区别是稀疏的,而且很大程度上取决于你的情况。

    db.collection("allinfo").find({somekey: "someval"})
    

    这里主要是这个^。 find 打开一个游标,它并没有那么重。它实际上非常快——下一部分,使用toArray 或each 都是读取光标。

    根据我的经验,当结果计数被忽略时,我使用each——我不需要它。当打开的光标的长度对所讨论的算法至关重要时,或者如果我将它传递给另一个处理数组的函数,而不是处理每个单独项目的函数,我会使用 toArray。

    这些项目都不是阻塞的,mongo 在 nodejs 的异步事件循环中本机运行。必须手动强制光标同步,不推荐。

    【讨论】:

      猜你喜欢
      • 2014-09-03
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 2018-04-06
      • 2016-07-14
      相关资源
      最近更新 更多