我应该在 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 中对布尔标志使用稀疏索引吗? 的相关文章

  • 创建前判断MySQL表索引是否存在

    我们系统的自动数据库迁移过程涉及运行包含新表定义及其附带索引的 sql 脚本 仅当这些表和索引尚不存在时 我才需要能够创建它们 表是通过使用 IF NOT EXISTS 来处理的 但创建索引时不存在这样的语法 我尝试编写一个存储过程 如下所
  • MongoDB 中的游标是什么?

    我们对最终发生的事情感到困扰cursor not found exceptions对于一些 Morphia 查询asList http mongodb github io morphia 1 0 guides querying 我找到了一个
  • NodeJS + Express + Mongo 会话存储

    我目前在尝试在 MongoDb 中存储会话时遇到了很大的麻烦 我尝试过express session mongo和connect mongodb 当我尝试加载登录页面时 两者都给出了相同的 500内部服务器错误 这让我觉得也许在某个地方与
  • Mongo Facet 聚合与 Sum

    试图在这个聚合中找出一些简单的东西 元数据下的 totalArrests 字段返回 0 由于某种原因 无法对前一阶段的该字段求和 请指教 const agg await KID aggregate group id source group
  • 在 mongodb shell 中打印文档值

    我想在 mongo shell 中打印此 JSON 文档的值 就像简单的控制台输出一样 无需创建新的集合或文档 提前致谢 我找到了一个解决方案 通过使用 forEach 应用 JavaScript 方法 db widget find id
  • MongoDB - 手册参考示例

    我正在读手册参考 http docs mongodb org manual reference database references document referencesMongoDB 数据库参考文档的一部分 但我不太理解 解析引用字段
  • 如何提高 MongoDB 中 update() 和 save() 的性能?

    我正在寻找有关如何在以下情况下提高数据库性能的提示 作为示例应用程序 我今天编写了一个相当简单的应用程序 它使用 Twitter 流 API 来搜索某些关键字 然后将结果存储在 MongoDB 中 该应用程序是用 Node js 编写的 我
  • Rails 3:# 的未定义方法“page”

    我无法克服这一点 我知道我读过没有数组的页面方法 但我该怎么办 如果我在控制台中运行 Class all 它会返回 但如果我运行 Class all page 1 则会收到上述错误 有任何想法吗 没有数组没有页面方法 看起来你正在使用kam
  • Azure DocumentDB 本地模拟器是否支持 mongodb 协议?

    Azure DocumentDB 本地模拟器是否支持类似于 Azure 托管 DocumentDB 中可用的 MongoDB 协议的 mongodb 协议 我没有看到启动本地模拟器时指定协议的方法 是的 Azure DocumentDB 模
  • 如何在 Node.js 中等待

    这是一个关于我认为 Node js 中的简单模式的问题 这是我在 CoffeeScript 中的示例 db is open false db open gt db is open true wait gt wait until db is
  • 如何在MongoDb中保存Timestamp类型值 |爪哇

    从 Java 驱动程序中 我想在 MongoDb 中保存一个类似于下面 json 的文档 ts Timestamp 1421006159 4 我尝试过的选项 选项1 映射 doc new HashMap 1 doc put ts new B
  • 两列上的唯一索引是否意味着每一列上都有一个索引?

    我的架构中有一个表 它对两列有唯一约束 UNIQUE Column1 Column2 SQlite 文档告诉我 这在这些列上创建唯一索引 http www sqlite org lang createtable html 我的问题是 这是否
  • 尝试使用 python 连接 mongodb atlas 时连接超时

    我正在尝试连接到我的 mongodb atlas 集群 但是当我尝试对我的数据库执行某些操作时 我总是超时 我使用的数据库是在 mongoshell 中创建的 也是我在 mongodb compass 中检查它们是否存在的集合 ERROR
  • RoboMongo:不显示所有文档

    当我打开集合时 它仅显示前 50 个文档 而不是全部文档 如何使 RoboMongo 显示集合中的所有文档 最好是自动 罗博蒙戈结果 https i stack imgur com K5fn8 png 2019 年 12 月 6 日更新 最
  • ERROR 188 (HY000): FTS 查询超出结果缓存限制 mysql

    我的表的文本列上有全文索引 约有 1100 万行 表结构 CREATE TABLE review id int 11 NOT NULL AUTO INCREMENT comments text COLLATE utf8mb4 unicode
  • java.lang.IllegalArgumentException:预期唯一结果或 null,但得到多个! - Spring Data Mongo

    我在用着Spring Boot v2 2 2 RELEASE and Spring Data MongoDB 在此示例中 我正在查找按部门代码执行组并获取该组下的所有员工 样本数据 firstName Laxmi lastName Para
  • 检查字段是否存在于数组的子文档中

    我有一个与此类似的架构 id Number line items id String quantity Number review request sent Boolean total price String name String or
  • 更新 Meteor 中的嵌套数组

    这是我的架构 id FJwSEMdDriddXLKXh name t number 5 owners id 1 name Name address Address type Type gender Gender notes 单击后 我将在所
  • MongoDB BSON 文档中的键顺序重要吗?

    我知道某些推荐需要对 hashmap 字典进行排序 但是 MongoDB 中的实际 BSON 文档重要吗 索引是否仍然有效 E g db people ensureIndex LName 1 FName 1 它对两者都有效吗 LName a
  • 重命名($project)数组中的字段 - MongoDB [重复]

    这个问题在这里已经有答案了 我有一个类似以下的文件 id 59ba903dacea50d0d7d47168 sections id 59d9dd7947ce651544c5d4c1 sectionName Section 1 id 59d9

随机推荐

  • 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