聚合管道和索引

2023-12-19

From http://docs.mongodb.org/manual/core/indexes/#multikey-indexes http://docs.mongodb.org/manual/core/indexes/#multikey-indexes,可以使用多键索引在数组字段上创建索引。http://docs.mongodb.org/manual/applications/aggregation/#pipeline-operators-and-indexes http://docs.mongodb.org/manual/applications/aggregation/#pipeline-operators-and-indexes列出了如何在聚合框架中使用索引的一些方法。然而,有时我可能需要执行$unwind在数组字段上执行$group。我的问题是,多键索引(或任何使用此类数组字段的索引)在管道中间进行操作后是否仍然可以使用?


一般来说,只有可以扁平化为普通查询的管道运算符($match, $limit, $sort, and $skip) 将能够使用集合上的索引。这就是原因之一$geoNear2.4 中添加的运算符必须位于管道的开头。

一旦你改变了文档$project, $group, or $unwind该索引不再有效/可用。

如果您在数组字段上有索引,您仍然可以在$unwind加快选择要管道的文档,然后使用第二个进一步细化所选文档$match.

考虑以下文档:

{ tags: [ 'cat', 'bird', 'blue' ] }

索引打开tags.

如果您只想对以以下开头的标签进行分组b那么你可以执行如下聚合:

{ pipeline: [
      { $match : { tags : /^b/ } },
      { $unwind : '$tags' },
      { $match : { tags : /^b/ } },
      /* the rest */
  ] }

首先$match是否使用索引进行粗粒度匹配tags.

之后的第二场比赛$unwind将无法使用索引(上面的文档现在是 3 个文档),但可以评估每个文档以过滤掉创建的额外文档(从示例中删除 {tags : 'cat' })。

HTH-罗布。

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

聚合管道和索引 的相关文章

随机推荐

  • 接口类型变量

    我正在学习Java 我看到以下关于界面在一本书中 当变量被声明为接口类型时 它只需 意味着该对象预计已实现该接口 这是什么意思 如果我定义一个界面 public interface Myinterface void method one i
  • 以编程方式查找消息框并生成按钮点击

    我正在尝试自动测试 winform 应用程序 我在与测试代码相同的进程中运行它 因此很容易找到 Net 控件并在它们上模拟用户操作 然而 我遇到了一个消息框 使用标准 MessageBox Show 方法创建 的问题 我怎样才能掌握它并模拟
  • 如何在执行 Environment.Exit() 之前刷新 dotnet 核心应用程序中的所有记录器

    基本上 我遇到了应用程序崩溃并且没有调试日志的老问题 因为应用程序在写入日志之前就终止了 经典的方法是捕获 main 中的所有异常并刷新异常块中的所有日志缓冲区 此外 添加睡眠以降低重新启动速度并允许缓冲区完成刷新 我使用serilog 我
  • 使用 jsonb_set() 更新特定的 jsonb 数组值

    目前我正在使用 PostgreSQL 9 5 并尝试更新 jsonb 字段数组内的值 但我无法获取所选值的索引 我的桌子看起来像这样 CREATE TABLE samples id serial sample jsonb 我的 JSON 看
  • Cocos2d EXC_BAD_ACCESS

    我是 cocos2d 的新手 突然得到了这个 EXC BAD ACCESS 我做了一个新的获胜菜单 但出现了错误 我认为错误是因为我调用了一个已释放的对象 但我没有释放任何东西 我的调试控制台没有错误 这很奇怪 这是我的 Level 1 m
  • 如何在本机反应中创建“全局状态”,以便我可以将用户输入发送到另一个页面?

    我正在尝试获取用户输入 电子邮件 并将其发送到密码页面进行显示 我觉得下面的尝试不起作用 因为输入是本地的 密码页面看不到 我该怎么办 有redux的东西吗 我走在正确的轨道上吗 如果你们需要更多代码 请告诉我 我比你们知道的更感谢您的帮助
  • 使用 gradle 将 pom.xml 包含在 Jar 中

    我正在尝试包含生成的pom xml in the jar我用 gradle 创建的 到目前为止 在我的父项目中 我已经 subprojects apply plugin maven publish publishing publicatio
  • 可以从 Android 模拟器运行 WebGL 内容吗?

    您好 我一直在尝试在许多 Android 模拟器 BlueStacks Andy Duos 和 VirtualBox 中运行 WebGL 内容 当我尝试在浏览器 chrome firefox 中访问任何 WebGL 内容时 我收到一条消息
  • Javascript:最佳单例模式[重复]

    这个问题在这里已经有答案了 可能的重复 在 JavaScript 中实现单例的最简单 最干净的方法 https stackoverflow com questions 1479319 simplest cleanest way to imp
  • 如何使用 MongoDB 和 Mongoid 在 Rails 3 上进行正确的数据库测试 (TDD)

    如何通过 Mongoid on Rails 使用 MongoDB 编写适当的单元测试 以及与此相关的集成测试 我这么问是因为与使用 SQLite3 相反 即使在运行测试时 我所做的一切仍然存在 所以目前我正在编写创建测试 然后我手动删除我所
  • Mock() 函数在 django2 中给出 TypeError

    我正在跟进本教程 https www obeythetestinggoat com book chapter purist unit tests html 当我跑步时test views py根据作者的说法 我有一个不应该出现的错误 Typ
  • SQL Reporting Services - 限制导出格式

    是否可以将导出格式限制为仅 PDF 和 Excel 注释掉或删除要在 渲染 部分中排除的格式rsreportserver config in Program Files Microsoft SQL Server MSSQL
  • 如何更改多个轴标签的字体大小(使用 host_subplot API 创建)

    我在互联网上查看 绝对所有具有多个轴的示例都具有默认值的 xlabel 和 ylabel 并且非常小 我使用以下代码来创建轴 from mpl toolkits axes grid1 import host subplot import m
  • UTF-8 服务器编码会在 ASP.NET 站点上产生 � 字符

    我正在运行 ASP NET WebForms博客引擎 http dotnetblogengine net 网站 maxpavlov com 我的博客上主要用俄语写作 有时 即使我正在写一个完全正常的俄语字符 当我查看生成的渲染博客文章页面时
  • BufferedImage颜色饱和度

    我正在编写一个简单的扫描应用程序自由精神 https github com sjamesr jfreesane and 阿帕奇PDFBox https pdfbox apache org 这是扫描码 InetAddress address
  • 与 QB 桌面产品集成

    几年前 我编写了一个 QB 集成 它使用 Web 连接器在 QB 桌面产品中读取和写入数据 它运行良好 但我不喜欢 Web Connector 我的任务是建立另一个 QB 集成 我希望这次避免使用 Web Connector 我尝试避免使用
  • 如何显示六边形填充颜色的图例?

    我正在 ggplot2 中绘制十六进制图 出现的图例是关于六边形的填充 计数 而不是关于六边形实际热缩放的内容 预测 我如何摆脱计数的图例 但让它显示实际热缩放的内容 预测 这是我的代码和我所指内容的图片 FF1xBARHH lt ggpl
  • Google Cloud Pub/Sub 推送消息 - 空 POST

    我目前已在Google云平台中成功设置主题和订阅 并已通过Google验证了我的网站并将域添加到GCP 每当我尝试从以下位置发送测试消息时https console cloud google com cloudpubsub topics s
  • 无法让小网格线出现在 matplotlib 图中

    好的 我有下面的代码 用于实时绘制通过串行接收的嵌入式设备的一些数据 它并不是一个生产工具 而是一个内部工程工具 因此它不是非常用户友好 问题是 无论我做什么 我都无法让小网格线出现 即使这里它们被设置为True which both 我可
  • 聚合管道和索引

    From http docs mongodb org manual core indexes multikey indexes http docs mongodb org manual core indexes multikey index