MongoDB toArray 性能

2024-02-11

我正在尝试从 Mongo/Node 中的术语集合构建类别树,但首先我使用 $in 选择所有树元素:

console.time('termsCol.find');
var terms = await termsCol.find({term_id: {'$in': flatTree}});
console.timeEnd('termsCol.find');

console.time('termsCol.toArray');
terms = await terms.toArray();
console.timeEnd('termsCol.toArray');

这执行:

termsCol.find: 0.162ms
termsCol.toArray: 30.910ms

我读过关于 SO 上 toArray 性能的帖子,但想知道是否有任何变化,因为这在页面请求期间占用了我的大部分时间。
我在该集合上有一个索引,它在大约 0.15 毫秒内返回 300 个术语,但是当我必须再等待 30 毫秒才能在 js 中进一步使用该数据时,这对我没有帮助。
如果没有办法改进 toArray 业务,我可能会创建一个缓存集合并在那里存储完整的术语树(希望它们适合 16MB)。


参考http://mongodb.github.io/node-mongodb-native/2.0/tutorials/streams/ http://mongodb.github.io/node-mongodb-native/2.0/tutorials/streams/您可以将结果一一流式传输,并可以创建 id 数组。

var MongoClient = require('mongodb').MongoClient
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the Server
MongoClient.connect(url, function(err, db) {
    console.log("Connected correctly to server");
 var col = db.collection('terms');
    var ids = []
    var findCursor = col.find({term_id: {'$in': flatTree}});
    findCursor.on("data", function(data) {
       ids.push(data._id)
    });
    findCursor.on("end", function(data) {
      // let's finish
      console.log(ids)
    }); 
}); 

我没有检查时间,但确定它应该小于(termsCol.find:0.162ms + termsCol.toArray: 30.910ms)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB toArray 性能 的相关文章

随机推荐

  • 如何在 VBA 中将变体分配给变体?

    警告 虽然乍一看可能像一个 但这是not一个初级问题 如果您熟悉 Let coercion 这句话或者您曾经研究过 VBA 规范 请继续阅读 假设我有一个类型的表达式Variant 我想将它分配给一个变量 听起来很容易 对吧 Dim v A
  • Ruby TCPSocket 超时是如何定义的?

    irb 1 9 3 p448 001 gt require socket gt true 1 9 3 p448 002 gt TCPSocket new www example com 111 gives Errno ETIMEDOUT 操
  • @cc_on 在 JavaScript 中意味着什么?

    有时我看到 cc on在 JavaScript 中 这是什么意思 这是为了条件编译 http en wikipedia org wiki Conditional comment Conditional Comment in JScript
  • 如何将Yolo格式边界框坐标转换为OpenCV格式

    I have Yolo格式化保存在 a 中的对象的边界框注释 txt文件 现在我想加载这些坐标并使用它在图像上绘制它OpenCV 但我不知道如何将浮点值转换为OpenCV格式化坐标值 我试过这个post https stackoverflo
  • Spring 应用程序在 8 小时后失去与 MySql 的连接。如何正确配置?

    我有一个 Spring 应用程序 我相信它使用 DBCP 连接池来连接到 MySql 数据库 我说 相信 因为这不是我非常擅长的领域 并且我不确定是否一切都设置正确 我运行该应用程序没有任何问题 一切都工作正常 问题在一夜之间就出现了 该应
  • 将某些页面功能或用户界面限制为 Asp.Net 中经过身份验证的用户

    我在用Asp Net C 构建一个应用程序 我正在使用Forms Authentication 我有一个要求 使得我的许多authenticated not anonymous users仅限于某些页面功能或用户界面 我猜Login Con
  • 如何使用 pandas 根据多个字符串索引拆分列

    我想根据几个索引将每一行拆分为新列 6ABCDE0218594STRING to 6 ABCDE 021 8594 STRING 这似乎以前至少被问过一次 但我一直只找到问题的变体 用分隔符分隔 如pandas 如何将一列中的文本拆分为多行
  • 带有内嵌图像的 JEditorPane

    我正在尝试在 Java JEditorPane 中显示内联图像 下面的代码使用的 HTML 内容可以在 Firefox 中正确显示图像 但不能在 JEditorPane 中显示 有什么想法吗 谢谢 import javax swing im
  • Python索引错误值不在列表中...on .index(value)

    我是Python的初学者 对于那些对我的帖子持负面想法的人 请离开 我只是在这里寻求帮助并尝试学习 我正在尝试在一个简单的数据集中检查 0 和 1 这将用于在平面图上定义空隙和实体 以定义建筑物中的区域 最终 0 和 1 将被坐标替换 我收
  • 在元素的父元素之后插入

    在下面的示例中 我需要什么样的选择器才能插入 test3 类的父级 divouter 之后 谢谢 div class divouter div class divinner div div
  • 如何在浏览器中使用模块,同时也引用 DevTools 中的变量和函数?

    我的 HTML 设置如下 所有 ES6 模块都工作正常 唯一的问题是我现在无法引用 DevTools 中的任何内容 例如使用控制台并输入变量以查看其值或手动使用函数 如何在能够使用 DevTools 的同时导入模块 谢谢 在 DevTool
  • Maven2:如何确定 Maven 构建正在使用特定的插件版本?

    我刚刚发现 Maven 插件管理听起来很奇怪 在进行网站生成时 我想使用特定版本的 Maven 网站插件 以便实现特定的功能 假设我想使用这个插件的 2 0 1 版本 如果我使用 POM 的报告部分来使用以下命令生成项目站点 mvn sit
  • Phonegap 软键盘覆盖输入字段[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我的 Phonegap 3 1 中的软键盘覆盖了我的 Android 4 x 中的输入字段 这个问题一直很烦人 我刚才差点就发帖问了 但突然
  • 是否可以将react-datepicker与react hooks表单一起使用?

    是否可以将react datepicker与react hooks表单一起使用 我尝试了以下示例 但没有运气 import React useState from react import styles css import useForm
  • 将字符串解析为 DirectoryInfo 的正确方法? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个程序 为了避免复杂化 我需要将给定的字符串变量解析为 DirectoryInfo 我想知道是否可以将字符串解析为 Direc
  • 如何制作骨头形状的纽扣

    我目前正在为我的网站试验一个按钮 我希望它看起来像一个普通按钮 但是一旦你将其悬停 它就会变成一根骨头 我的网站是关于狗的 所以我使用了一个已经存在的 codepen 项目 最终得到了这个 root bg 1a1e24 color eee
  • 使用 jQuery 重复元素

    我确信这对于正确的人来说是显而易见的 但是如何使用 jQuery 重复一个元素呢 本质上 我希望 jQuery 无限次重复内联元素 就像您使用 CSS 来重复背景纹理的图形一样 我一直在研究 clone 和 each 但确实可以使用一些指针
  • AngularJS:指令隔离范围 - 范围变量未定义

    请有人能给我解释一下为什么吗attrDir的范围变量是可见的 并且oneWay不是吗 我以为scope 也是孤立的 angular module test angular module test directive attrDir attr
  • 访问项目资源中的图像?

    如何在运行时访问已添加到项目资源中的图像 我希望能够做这样的事情 if value picBox1 image Resources imageA else picBox2 image Resources imageB Something I
  • MongoDB toArray 性能

    我正在尝试从 Mongo Node 中的术语集合构建类别树 但首先我使用 in 选择所有树元素 console time termsCol find var terms await termsCol find term id in flat