将 MongoDB 中的 _id 类型更改为整数是否不好?

2024-01-06

MongoDB 使用 ObjectId 类型作为 _id。

如果我将 _id 设置为递增整数会不会很糟糕?

(With this https://github.com/goncalossilva/mongoid-sequence宝石,如果你有兴趣)


不,它一点也不坏,事实上内置的ObjectId在索引中相当大,因此如果您相信自己有更好的东西,那么非常欢迎您更改索引的默认值_id领域到任何。

但是,这是一个大but,在决定放弃默认制定时需要考虑一些因素ObjectId,特别是当使用自动递增 _ids 时,如下所示:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field

多线程并不是一个大问题,因为findAndModify原子锁实际上可以解决这个问题,但随后您就遇到了第一个问题。findAndModify不是最快的功能,也不是最轻的功能,定期使用它时会发现性能显着下降。

无论如何,你还必须考虑自己执行此操作的开销,即使没有findAndModify。对于每个插入,您都需要一个额外的查询。想象一下,有一个唯一的 id,每次要插入时都必须查询其唯一性。最终你的插入率会下降到极点,你的锁定时间也会增加。

当然ObjectId非常擅长保持唯一性,而无需在插入之前通过接触数据库来检查或制定其自己的唯一性,因此它没有这种开销。

如果您仍然认为整数 _id 适合您的场景,那么就使用它,但请记住上述开销。

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

将 MongoDB 中的 _id 类型更改为整数是否不好? 的相关文章

  • 从部分重定向回具有部分的同一页面后保留验证错误

    因此 我试图从我的表单中获取错误 该表单在我的 root path 中呈现为部分内容 在我尝试发布它但失败 或成功 后 我想重定向回 root path 但是 redirect to 决定不保存任何验证信息 想知道如何做到这一点 class
  • Eventmachine start_tcp_server 无接受器 - 端口正在使用或需要 root 权限(运行时错误)

    我已经 3 天无法运行本地服务器了 重新启动我的计算机没有帮助 有几次 在反复尝试大约 40 50 次之后 它随机地起作用了 我不明白为什么 我尝试过一次不同的端口并且有效 但从那以后 没有端口有效 每次我尝试运行我的 Rails 服务器时
  • 使用 Minitest 测试自定义验证器

    我有多个带有电子邮件验证的模型 因此 我将验证提取到自定义验证器中 我按照以下教程做到了这一点导轨指南 http guides rubyonrails org active record validations html custom va
  • 如何在 JS Rails 响应中包含 HTML?

    我有一个响应 HTML 和 JS AJAX 查询的 FooController app controllers foo controller rb class FooController lt ApplicationController l
  • Mongodb 聚合数组中的子文档

    我正在使用 mongodb 作为后端实现一个小型应用程序 在此应用程序中 我有一个数据结构 其中文档将包含一个包含子文档数组的字段 我使用以下用例作为基础 http docs mongodb org manual use cases inv
  • 自定义变形在rails3上不起作用?

    我正在使用 Rails 3 0 1 并在initializers inflections rb 中有以下代码 ActiveSupport Inflector inflections do inflect inflect irregular
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • Rails 3:使用 Simple_form 如何创建一个向specialities#create 发布帖子的表单?

    如何使用 Simple form 创建一个向specialities create 发布帖子的表单 我试过这个
  • 在特定页面上执行 javascript 的正确“Rails”方式

    我试图在特定页面上运行 javascript 而我唯一的解决方案似乎是反模式 我有controller js内部生成的assets javascripts 我在用着gem jquery turbolinks 我的代码类似于以下内容 docu
  • 回形针不支持 .doc 文件

    在 Rails 4 0 2 中 我使用回形针 gem 上传文件 但它不支持 doc 文件 在文件上传字段下方 显示一条错误消息 扩展名与其内容不匹配 在模型中 检查内容类型的验证如下 validates attachment content
  • 自定义通用 Rails 错误消息

    我们的 Rails 应用程序被设计为链接到多个客户端数据库的单个代码库 根据子域 应用程序确定要连接到哪个数据库 我们使用液体模板为每个客户定制演示文稿 我们无法为每个客户定制通用的 我们很抱歉 出了点问题 消息 谁能推荐一种方法让我们能够
  • 回滚后是否应该删除迁移

    我对 ruby 和 Rails 相当陌生 刚刚开始了解迁移 我的问题是回滚后删除迁移的最佳实践或正确时间是什么 到目前为止 我读到的内容是回滚后是否删除迁移的观点问题 但是在团队中工作时删除迁移是否有任何重大影响 以及保留迁移文件相对于删除
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • Mongoose.js instance.save() 回调未触发

    var mongo require mongoose var connection mongo createConnection mongodb 127 0 0 1 test connection on error function err
  • Rails 从 OrdersController 更新用户模型的属性

    这是我的代码 订单控制器类 def create order Order new params order if order purchase work GATEWAY store credit card options result wo
  • 如何在两个模型之间建立两个 has_many/belongs_to 关系?

    我有一个Project模型 以及一个Contact模型 项目模型有一个所有者和一个客户 两者都是Contacts 显然我遇到了一些不明确的事情 因为如果我有联系人并询问其项目 Rails 将不知道我询问的是它的项目是客户还是所有者 到目前为
  • 多次部署后 Heroku Slug 大小

    我有一个红宝石 on Rails非常接近 slug 大小限制 300mb 的应用程序 我已经尽可能地减小了尺寸 slugignore但还没有得到我想要的结果 一时兴起 我尝试创建一个新的Heroku应用程序并向其部署相同的 git 存储库
  • 我必须使用什么加密程序来通过 HTTP 协议发送加密的“电子邮件”和“密码”值?

    我正在使用 Ruby on Rails 3 我想通过 HTTP 协议发送 电子邮件 和 密码 值 我知道 我不应该 但我需要 我需要从发送用户凭据我的客户申请到一个我的服务应用 我可以使用公共和私人RSA密钥来实现这一点 但如果是这样 我不
  • 管理员未授权 Mongodb 执行 listDatabases 命令

    删除 mongodb 用户后 无法重新连接 mongo 没有 验证 我创造了超级用户 https docs mongodb org v2 6 reference built in roles superuser roles tomuser
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la

随机推荐

  • 如何在小窗口中打开“zxing条码”扫描屏?

    zxing Barcode 扫描仪在我的应用程序中成功运行 https github com journeyapps zxing android embedded https github com journeyapps zxing and
  • 如何优化elasticsearch percolator索引内存性能

    使用elasticsearch percolator索引时有没有办法提高内存性能 我为我的渗滤器创建了一个单独的索引 我有大约 1 000 000 个用户创建的已保存搜索 用于电子邮件警报 创建此渗透器索引后 我的堆使用率飙升至 100 并
  • 重新打开 gem 提供的 ActiveRecord 模型

    我正在尝试扩展 ActiveRecord 模型 Vote 那是一颗宝石 https github com peteonrails vote fu https github com peteonrails vote fu 提供给我的应用程序
  • “自动释放但没有池”是什么意思?

    我的应用程序结构如下 核心部分是用 C 编写的 并大量使用线程 我正在其上用 Objective C 开发 UI 如果我不执行线程 它工作正常 但我无法禁用 停止线程 UI 在日志中随机崩溃 我可以看到以下消息 NSAutoreleaseN
  • Spark:不支持的文字类型类 scala.collection.immutable.Nil$ List()

    我搜索了与这个问题相关的其他答案 但没有帮助 我正在尝试向数据框中添加一列 该列的数据类型为Seq CaseClass 起初我认为 Spark 可能不支持集合类型列 但事实并非如此 这是我尝试运行的代码示例 我只想向每一行添加一个空的 Se
  • 在没有标题的 UITabBarItem 上设置辅助功能标签

    我有一个像这样的 UITabBarItem Controller tabBarItem UITabBarItem alloc initWithTitle nil image nil tag 0 但是标题为 nil 会删除可访问性和 KIF
  • Spark 数据框列命名约定/限制

    我现在多次遇到 Py Spark 列名称的默认命名 从收到的 csv 文件导入 的问题 混合大小写和 或 在列名称中 所以我决定找出实际保存的列名 并发现以下内容 这个网站 https medium com an chee why usin
  • JavaScript 文件传输 SSH

    我目前正在开发一个基于浏览器的项目 这是我第一次使用 JavaScript HTML 和 CSS 之前没有使用这些语言的经验 基本上该项目涉及以下内容 1 允许用户通过以下代码上传 csv文件
  • 如何在不卸载的情况下使用多个版本的Python

    我面临着一个独特的处境 虽然微不足道 但却很痛苦 我需要使用 Python 2 6 6 因为 NLTK 没有移植到 Python 3 这是我可以收集到的 在不同的代码 同时工作 中 有一个集合计数器函数仅在 Python 3 中可用 但在
  • 类型安全 c++11 枚举类标志的模板

    我正在尝试使用模板创建类型安全的 C 标志 我也想区分一下a旗帜和旗帜s 零个 一个或多个标志 下面的解决方案效果很好 除了EnumFlag
  • Griffon 不创建 Eclipse .project 和 .classpath 文件

    狮鹫 0 9 2 beta 3 执行 griffon create app 演示控制台 后 找不到 project 因此无法将其导入到eclipse sts 中 但文档说 Griffon 自动为您创建 Eclipse project 和 c
  • Intellij IDEA 2018.1 Jdk10无法运行测试

    无法使用 IDEA 2018 1 JDK 10 运行测试 它说 错误 6 1 java source 8 不支持模块 使用 source 9 或更高版本以启用模块 我使用菜单将语言级别提高到 10 文件 gt 项目结构 gt 项目 gt 项
  • ADXL345 与 ESP32 I2C 垃圾值问题

    我已根据以下教程使用 I2C 接口将 ESP32 与 ADXL345 连接起来Tutorial http www esp32learning com code esp32 and adxl345 sensor example php 但是
  • 如何启动jboss 7.1.1服务器并在jboss 7.1.1中部署项目

    我使用 JBoss 7 服务器 因此我下载了 JBoss 7 1 1 版本并解压缩此 zip 文件 然后我转到 bin 文件夹并双击standalone bat但新的 cmd 窗口会在 2 3 秒内打开和关闭 如果我使用 cmd 运行它 我
  • PHP 未定义索引错误

    我是 PHP 新手 我收到此错误 注意 var www test modifyform php 上未定义索引 productid 32号线 注意 未定义索引 在线 var www test modifyform php 中的名称 33 注意
  • Android 广播接收器无法在后台运行

    我有 2 部不同 Android 版本的 Android 手机 第一个手机运行 Kitkat 第二个手机运行 Nougat 我目前正在使用以下代码 5 或 7 小时后 Android 应用程序不再检测事件 有人可以帮我吗 package c
  • OpenShift、python 2.7 和带有 htaccess 的静态文件

    我正在尝试配置 apache 来为 URL 提供静态文件 例如site com img bla jpg Python墨盒 烧瓶 我知道预配置的别名是什么wsg static目录 所以我们可以使用site com static bla jpg
  • 在 pandas/matplotlib/seaborn python 中使用自定义配色方案

    我想对各种绘图使用自定义配色方案 但无法使其工作 对这些绘图使用 seaborn 和 或 matplob pandas flatui 9b59b6 3498db 95a5a6 e74c3c 34495e 2ecc71 ax sns viol
  • 将 XIB 中的按钮链接到 Storyboard 中的视图控制器

    我有一个 XIB 视图控制器 里面有一个按钮 我还有一个 storboard 视图控制器 我想知道是否有一种方法可以将 xib 视图控制器中的按钮链接到故事板视图控制器 简短的回答 不 不使用界面生成器 不过你可以用代码来完成 实例化两个视
  • 将 MongoDB 中的 _id 类型更改为整数是否不好?

    MongoDB 使用 ObjectId 类型作为 id 如果我将 id 设置为递增整数会不会很糟糕 With this https github com goncalossilva mongoid sequence宝石 如果你有兴趣 不 它