为什么 MongoDB 文档建议不要使用 DBREF?

2023-12-29

The DBREF 的 MongoDB 文档 https://docs.mongodb.org/manual/reference/database-references/ say:

除非您有令人信服的理由使用 DBRef,否则请使用手动引用。

为什么? DBREF 似乎更易于使用,因为它们对数据库和集合名称进行编码,这将减少应用程序中的硬编码。另外,DBREF 是许多驱动程序都能理解的标准格式 https://docs.mongodb.org/manual/reference/database-references/#driver-support-for-dbrefs.

这个问题是相关的,但不完全相同:

MongoDB - DBREF 是必要的吗? https://stackoverflow.com/questions/9412341/mongodb-is-dbref-necessary

该问题的答案是嵌入/非规范化优于链接,但它并没有回答为什么手动链接优于 DBREF 的问题。


这是我所看到的所有内容的结论。

Using DBRef不是一个join操作时,会自动查询第二次或多次,取决于多少DBRef你已经进入了这个收藏领域。

假设您有一个集合,其模型有 10 个DBRef,您查询 10 个元素的列表以及其中之一DBRef is really needed。一旦你查询,Mongodb就会运行101(1 + 10*10)自动查询,无论您需要这些DBRef或不。如果您手动查询这些字段,只需一些编码即可11(1 + 1*10)需要查询。

你认为呢?

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

为什么 MongoDB 文档建议不要使用 DBREF? 的相关文章

  • Mongoose Date.now 时间不准确

    在过去的两个小时里 我一直在抓狂 起初我以为 Moment js 是没有返回正确时间的罪魁祸首 但其实是 mongoose Date now 做了一些邪恶的事情 这是代码 const moment require moment const
  • 使用 spring data mongodb 存储库添加可选查询参数

    我想使用 spring data mongodb 添加可选查询参数 控制器代码 RestController private final ActionService actionService RequestMapping value ac
  • Mongo Facet 聚合与 Sum

    试图在这个聚合中找出一些简单的东西 元数据下的 totalArrests 字段返回 0 由于某种原因 无法对前一阶段的该字段求和 请指教 const agg await KID aggregate group id source group
  • 类型错误:无法读取未定义的属性“_id”

    我在将文档保存到名为的集合的简单发布请求中收到错误 TypeError 无法读取未定义的属性 id books 我的有效负载如下所示 name practical view author DN location room 50 而我只是在做
  • MongoDB - 手册参考示例

    我正在读手册参考 http docs mongodb org manual reference database references document referencesMongoDB 数据库参考文档的一部分 但我不太理解 解析引用字段
  • 从现有 MongoDB 创建可视化的工具[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我接手了一个现有 MongoDB 的项目 我想获得现有数据的视觉图像 图表等 显然 MongoDB 与
  • 需要对 mongodb 中的数组对象值求和

    如果该值存在 我正在尝试计算总价值 但查询并不能 100 工作 那么有人可以帮我解决这个问题吗 这是我的示例文档 我附上了两份文件 请提供这些文件并找出最佳解决方案 文件 1 id 1 message count 4 messages da
  • 如何在 Node.js 中等待

    这是一个关于我认为 Node js 中的简单模式的问题 这是我在 CoffeeScript 中的示例 db is open false db open gt db is open true wait gt wait until db is
  • 如何最高效地更新MongoDB中的大量文档?

    我想要最有效地更新大量 gt 100 000 文档 我的第一个天真的方法是在 JS 级别上进行 编写脚本 首先获取 ids 然后循环 ids 并通过 id 调用更新 完整 文档或 set 补丁 我遇到了内存问题 还将数据分成了最大块 500
  • mongodb 备份是自动进行的吗?

    我们使用两个 mongodb 服务 现在 swisscom 开发者控制台中有一个备份按钮 我们是否必须使用此按钮手动进行备份 还是自动进行进一步备份 如果是 何时以及多久一次 我们会自动进行备份 但仅用于灾难恢复 我们不向客户提供此备份 所
  • 由于空数组包含电子邮件为空的文档,MongoDB 错误 E11000 重复键错误集合

    这是我正在编写的代码 const createOrgPerso new Person org newOrganisation doc id data 但空数组仍在创建中 然后再次运行这段代码 它给出E 11000 duplicate key
  • mongodb c# 选择特定字段

    需要一些帮助来创建generic按名称选择字段的方法 像这样的东西 T GetDocField
  • 从 MongoDB+Node.js 获取数据到客户端 JavaScript

    如何使用 Node js 连接 MongoDB 然后将结果传递给客户端 JavaScript 并以 HTML 形式显示 var http require http var URL require url var Db require mon
  • 什么是 __ext_vector_type__ 和 simd?

    我正在使用 Apple Metal API 以及所谓的simd图书馆 标题中有这样的代码 typedef attribute ext vector type 3 float vector float3 我很好奇它实际上做了什么以及为什么编译
  • 引用 MongoDB Aggregation Pipeline 中的整个文档

    我可以使用 运算符引用 MongoDB 聚合管道中属性的各个值 但是 我如何访问 引用 整个文档 UPDATE 提供一个示例来解释场景 这是我正在尝试做的事情的一个例子 我有一系列推文 每条推文都有一个成员 集群 它指示特定推文属于哪个集群
  • 通过非 sf 列内连接两个 sf 对象

    我尝试使用内连接或左连接连接两个 sf 数据帧 这些数据框内部都有几何列 我不断收到错误 check join x y 中的错误 y 应该是一个数据框 对于空间连接 请使用 st joinFALSE 下面的可重现示例 df1 lt data
  • 使用 Morphia 配置 Spring Boot?

    我不想利用 Spring DATA MongoDB 支持 我想利用名为 Morphia 的 MongoDB ORM https github com mongodb morphia https github com mongodb morp
  • MongoDB - 解释特定的解释输出

    我使用的是 MongoDB 版本 2 4 8 test 2014 03 25 14 42 13 0 gt gt gt db users getIndexes v 1 key id 1 ns test users name id v 1 ke
  • 更新 Meteor 中的嵌套数组

    这是我的架构 id FJwSEMdDriddXLKXh name t number 5 owners id 1 name Name address Address type Type gender Gender notes 单击后 我将在所
  • FieldPath 字段名称不能包含“.”当尝试使用 AGGREGATE 时

    我的查询有什么问题吗 db table aggregate match gt expr gt and gt eq gt size gt events 4 events 0 updated gt lt gt 2019 05 05 我越来越 M

随机推荐

  • android中org.json.JSONObject无法转换为JSONArray

    当我在本地主机中尝试时 它可以找到 这是我的本地主机提供的 JSON 是的 这个网址有错误http api androidhive info contacts http api androidhive info contacts id 1
  • 使用已知的用户 ID、相册 ID 和相册名称在 Facebook 应用 Android 中打开 Facebook 相册

    我努力了 Facebook 专辑 fb album s owner s 这些都不起作用 我只想打开 Facebook 应用程序并打开相册 None
  • 如何在 macOS 上的 Xcode 动态库中解开从 C++ 导出的符号

    我一直在尝试用 C 开发一个可以在应用程序中运行时加载的动态库 我终于成功了 但它有点难看 我有一个函数 它将指向 C 类的指针作为参数 如下所示 bool registerGrindPlugin Grind PluginManager m
  • 右连接等于左连接吗? [复制]

    这个问题在这里已经有答案了 一段时间以来 我只知道如何使用 INNER JOIN 完全不知道 LEFT RIGHT OUTER JOIN 的作用 虽然 正如我刚刚读到的那样 我看不出右派的目的是什么 在我看来 它与反向 LEFT JOIN
  • 创建与部分用户代理匹配的 WURFL 补丁

    我正在使用 WURFL 来识别用户是否使用移动设备 某些用户代理字符串被错误地识别为移动设备 从而导致内容类型设置不正确 这是一个现实生活中的用户代理的示例 其行为如下 Mozilla 5 0 GTmetrix http gtmetrix
  • 使用openpyxl无法读取excel文件

    我有一个 Excel 文件列表 最后一行类似 它包含有关客户的私人信息 他的名字 姓氏 电话 每个excel文件对应一个客户 我需要制作一个 Excel 文件 其中包含每个客户的所有数据 我决定自动执行此操作 所以查看了openpyxl图书
  • 程序和调试器在没有出现问题的情况下退出

    我正在开发一个 WPF 应用程序 调试时 逻辑达到某个点 然后应用程序无故退出 VS 调试器没有捕获任何内容 唯一的问题指示是输出窗口中的以下内容 程序 6228 SomeApp vshost exe 托管 v4 0 30319 已退出 代
  • 如何从扩展名为 .pyw 的 Python 脚本打印到标准输出?

    我有一个带有 wxpython GUI 和一些命令行参数的 python 程序 我使用 py2exe 生成一个 Windows 可执行文件 我不想在后台有一个命令行窗口 因此 py2exe 使其成为一个没有此窗口的 pythonw 可执行文
  • javascript中如何检查字符串是否以数字开头

    我试图确定用户是否输入了电子邮件 ID 或电话号码 因此我想检查字符串是否以 1或数字开头 以确定它是否是电话号码 如果不是 我得出的结论是这是一封电子邮件 或者我可以检查它是否以字母开头以确定 我该如何检查这个 如果这就是解决方案 我对正
  • 如何在管理器中延迟加载模型以停止循环导入?

    在 Django 中 您可以为模型创建管理器 我通过添加一个名为的新文件来做到这一点managers py在我的模型中objects MyManager 为了停止循环进口 我这样做self model 但是 如果我需要在我的经理中引用不同的
  • 使用 R 操作 shapefile 属性表

    我已经发布了这个关于GIS堆栈交换的问题 https gis stackexchange com questions 64174 how to add a field to a shapefile using r 但流量并不多 我是一名 G
  • 全屏后导航栏下的UIView

    我有一个带有导航栏的应用程序 当我单击应用程序中的照片预览时 它会全屏显示照片 但是当我关闭全屏时 我的控制器的视图位于导航栏下方 我在 StackOverflow 上看到有必要添加这一行 self edgesForExtendedLayo
  • DjangoProject 没有出现在我的 Docker-Image (Docker toolbox for windows home) 中

    我正在尝试使用 docker compose 构建一个 django 项目 例如它在Docker 文档 https docs docker com compose django 我使用 Windows 10 Home 的 Docker 工具
  • _UIFallbackPresentationViewController

    当我关闭通过点击 iPhone 上 UIWebView 中 UIMenuController 上的 定义 打开的字典时 我不断收到以下错误 Unbalanced calls to begin end appearance transitio
  • 如何使用jquery创建动态变量?

    我想要动态创建一些 jquery 变量 在我的代码中 我有一个循环 并且我想使用循环值创建一些变量 这是我的示例代码 array student parent employee each user types function index
  • 如何强制执行软件试用安装的到期日期?

    我需要为我的定制软件提供试用期 我有一个 64 位 C 应用程序 它使用 64 位多处理器支持 DLL 其他要包含的实用程序是用 C 编写的 exe 和 dll 我必须能够加密 C 代码 将软件加密为仅在特定计算机上运行 并强制执行不能通过
  • 使用 Excel 宏/vba 打开/关闭图表系列的可见性

    我正在 Excel 中制作折线图 图表 并将多个数据系列绘制到同一个图表上 我需要创建一个宏 VBA 解决方案 可以通过按下按钮 或复选框等 打开 关闭这些系列的可见性 类似这张图 通过excel菜单系统手动完成 我试图查看所有成员变量 方
  • 在位图图像中设置背景颜色

    我想将画布保存为图像 它可以工作 但背景颜色是黑色 我必须如何添加才能改变颜色 我使用这段代码 Size size new Size surface Width surface Height surface Measure size sur
  • 如何打印带有参数值的调用堆栈?

    功能traceback print stack 打印调用堆栈 如果我们可以看到每个级别的参数值 将有助于调试 但我找不到办法做到这一点 例如 def f1 a 2 f2 a a 1 def f2 a 3 f3 def f3 a 4 prin
  • 为什么 MongoDB 文档建议不要使用 DBREF?

    The DBREF 的 MongoDB 文档 https docs mongodb org manual reference database references say 除非您有令人信服的理由使用 DBRef 否则请使用手动引用 为什么