我应该在 mongodb 中对布尔标志使用稀疏索引吗?

2024-04-27

我有一个布尔标志:finished。我是不是该

A: index({ finished: 1 })
B: index({ finished: 1 }, {sparse: true})
C: use flag :unfinished instead, to query by that
D: other?

Ruby mongoid 语法。我的大多数记录都会有标志 finish=true,并且大多数操作显然会获取那些未完成的操作。我不确定我是否理解何时使用稀疏,何时不使用。谢谢!


稀疏的标志有点奇怪。要了解何时使用它,您必须首先了解为什么“稀疏”存在。

当您在一个字段上创建简单索引时,每个文档(甚至没有该字段的文档)都会有一个条目。

例如,如果您有一个索引{rarely_set_field : 1},您将拥有一个主要由以下内容组成的索引null因为大多数情况下该字段不存在。这样既浪费空间,而且搜索效率低。

The {sparse:true}选项将摆脱null值,因此您会得到一个仅包含条目的索引{rarely_set_field}被定义为。

回到你的案例。

您正在询问有关使用布尔值+稀疏值的问题。但稀疏并不真正影响“布尔”,稀疏影响“设置与未设置”。

在你的情况下,你正在尝试获取unfinished。发挥杠杆作用sparse关键不是布尔值,而是事实unfinished条目具有该键,而“完成”条目根本没有键。

{ _id: 1, data: {...}, unfinished: true }
{ _id: 2, data: {...} } // this entry is finished

听起来你正在使用队列

您绝对可以利用上面的信息来实现稀疏索引。然而,实际上听起来您正在使用队列。 MongoDB 可以作为队列使用,如下two http://blog.serverdensity.com/2011/09/28/replacing-rabbitmq-with-mongodb/ examples http://captaincodeman.com/2011/05/28/simple-service-bus-message-queue-mongodb/.

但是,如果您查看队列,就会发现他们并没有按照您的方式进行操作。我个人使用 MongoDB 作为某些生产系统的队列,它运行得很好,但测试您的预期负载,因为专用队列会执行得更好。

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

我应该在 mongodb 中对布尔标志使用稀疏索引吗? 的相关文章

随机推荐

  • Rails 4 中的“find_all_by_id”相当于什么

    我有一个 id 数组 我想使用活动记录查询从数据库中查找它们各自的记录 例如 ids 2 3 1 现在 对于我来说 要查找 id 是数组中的其中之一的特定模型的所有记录 在较低版本的 Rails 中 我想我可以执行以下操作 Model fi
  • 使用滚动视图通过 Swift 放大图像

    我正在从 Apple 的 Swift 应用程序开发 中学习 Swift 我遇到了约束问题 特别是在第 593 页的 I Spy 实验室 它基本上希望您创建一个滚动视图 其中包含图像视图 并使其可以放大图像并滚动它 例如当您打开照片时 在 照
  • 通过调用 shell 脚本设置 ant 属性?

    有没有办法通过捕获 shellscript 的输出来设置 ant 属性 或另一个蚂蚁任务 像这样的事情
  • 宏扩展忽略了 MSVC 中的一些标记

    我在 msvc 编译器中遇到宏扩展问题 我希望将以下代码扩展为F x 它在 gcc 和 clang 上执行 但 msvc 将其扩展为F忽略x令牌 这里发生了什么 define S s s define F define M S S F x
  • 如何在文本文件中找到最长的 N 行并将其打印到标准输出?

    第一行包含数字 N 的值 后跟多行 我可以按照n 2算法的顺序解决它 有人可以建议一个更好的吗 您可以使用最小堆并在 O n log N 中完成 heap new Min Heap N foreach line in text if len
  • 如何将字节数组转换为任何类型

    好的 我看到有人问如何将字节数组转换为int string Stream等等 答案各不相同 我个人还没有找到任何令人满意的答案 这里有一些我们想要将字节数组转换成的类型 UnityEngine Font可以吸收ttf data UnityE
  • Google Inceptionism:按类别获取图像

    在著名的 Google Inceptionism 文章中 http googleresearch blogspot jp 2015 06 inceptionism going deeper into neural html http goo
  • 将另一个类添加到 div

    我有一个函数可以检查表单提交的年龄 然后根据年龄在 div 中返回新内容 现在我只是使用 getElementById 来替换 HTML 内容 但我认为如果我也可以向 div 添加一个类 那对我来说会更好 例如我有 if under cer
  • SceneKit 绘制曲线

    我想用 SceneKit 画一条贝塞尔曲线 并认为这可行 func drawCurvedLine let scene SCNScene let scnView self view as SCNView scnView scene scene
  • 共享对象发送方法

    在 FMS 中 我想使用共享对象在聊天应用程序中发送消息 因为它是实时的 我的问题是 如何使用共享对象在实时聊天应用程序中向用户来回发送消息 这需要服务器端脚本 客户端还是两者都需要 您只需要在服务器端编写一些特定功能的代码 例如安全功能
  • 如何声明返回函数指针的函数指针

    如何声明一个函数指针 该指针指向具有相同参数的函数 并返回一个指向具有相同参数的函数的指针 i e funcPtr指着func1 int a int b and func1返回指向另一个函数的指针func2 int a int b func
  • 无法获取POST参数

    我正在使用 WebApp2 作为框架在 Python 中开发一个 Web 应用程序 我无法获取通过填写表单提交的http POST请求参数 这是我创建的表单的 HTML 代码
  • 使用 Passport-facebook 的 Facebook OAuth 安全性

    我目前正在使用客户端 React 组件让用户通过我的应用程序中的 OAuth 登录 Facebook 在服务器端 我使用 npm 包护照 Facebook 令牌 https github com drudge passport facebo
  • 无法将“Windows.UI.Xaml.Controls.ItemsControl”类型的对象强制转换为“Windows.UI.Xaml.Controls.Image”类型

    我在此项目控件中放置了一个点击事件 以便在点击图像时查看图像 但是当我这样做时 我收到此错误 我该如何修复它 我尝试更改为项目图像但不存在 XAML 代码
  • 如何获取用星号定义的 WPF 网格列来剪辑内容?

    我有一个使用星号比例的网格控件 例如
  • 如何在Python中使用x和y坐标验证ES384 JWT签名

    我有一个 JWT 如下 Authorization Bearer eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6IjQ0ODIzZjNkLTBiMDEtNGE2Yy1hODBlLWI5ZDNlOGE
  • 并行框架和避免错误共享

    最近 我回答了一个关于优化可能的并行方法来生成任意基数的每个排列的问题 我发布了类似的答案并行化 实施不佳代码块列表 有人几乎立即指出了这一点 这几乎肯定会给你带来错误的共享 并且可能会慢很多倍 归功于gjvdkamp https stac
  • Google Apps 脚本 - 访问单元格备注和评论

    大家好 感谢您花时间查看我的问题 我是一名九年级老师 正在制作一份定制的成绩表 并且刚刚完成了一个 GUI 可以让家长查看孩子的成绩 然而 在实际的成绩单上 我使用单元格注释 以前是注释 来存储特定于成绩的信息 即吉米遗漏了作业的 b 部分
  • numpy.savetxt“元组索引超出范围”?

    我正在尝试将几行写入文本文件 这是我使用的代码 import numpy as np Generate some test data data np arange 0 0 1000 0 50 0 with file test txt w a
  • 我应该在 mongodb 中对布尔标志使用稀疏索引吗?

    我有一个布尔标志 finished 我是不是该 A index finished 1 B index finished 1 sparse true C use flag unfinished instead to query by that