gpt4 book ai didi

javascript - MongoDB:forEach 与 fetch + each

转载 作者:可可西里 更新时间:2023-11-01 09:13:35 25 4
gpt4 key购买 nike

当我想从我的 Meteor 应用程序迭代存储在 MongoDB 中的一些文档集时,我可以使用任一个

db.collection.find( ... ).forEach( function f( doc ){ ... })

var docs = db.collection.find( ... ).fetch();
_.each( docs, function f( doc ){ ... }); // using underscore.js

从性能的 Angular 来看,哪种方式更可取?这两种选择各有什么优缺点?

最佳答案

这两个语句在核心 API 级别上做的事情基本相同,即获取游标并转换结果。然而,在性能方面存在一个“核心”差异:

  • .forEach() 将“一次一个”转换游标结果并处理它提供的迭代器函数。

    <
  • .fetch() 另一方面,“一次性”从游标获取“数组”,这意味着它全部“在内存中”一击。

所以无论如何,在执行从查询的游标中获取的“核心”操作时,实际上都“更快”。但是,不在每次游标迭代时评估“表达式”“可能”稍微快一些,因此 .fetch() 可能会在这里赢得“一点”。

当然,最大的收获是“现在一切都在内存中”,因此需要考虑这样做的“开销”。同样,在 .fetch() 时,_.each() 尚未处理,俗话说。 “您在秋千上“获得”的东西很可能在回旋处“失去””

如果不对特定案例进行全面基准测试,“时间”可能会相似。通用基准测试几乎毫无用处,除非它专门适用于您正在使用的数据集的大小。

因此得出一般情况,“大致相同”,但是使用 .fetch() 将消耗更多内存只是从头开始迭代游标。

关于javascript - MongoDB:forEach 与 fetch + each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com