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

Max*_*ber 7 join reference mongodb

DBREFMongoDB文档说:

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

为什么?DBREF似乎更容易使用,因为它们对数据库和集合名称进行编码,这将导致应用程序中的硬编码减少.此外,DBREF是许多驱动程序都能理解的标准格式.

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

MongoDB - DBREF是否必要?

这个问题的答案是嵌入/非规范化比链接更可取,但它没有回答为什么手动链接比DBREF更可取的问题.

Kro*_*ria 1

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

usingDBRef不是一个join操作,它会自动查询第二次或多次,取决于DBRef你在这个集合字段中得到了多少。

假设您有一个集合,其模型有 10 个DBRef,您查询其 10 个元素的列表,其中之一DBRefreally needed。一旦您查询,Mongodb 将101(1 + 10*10)自动运行查询,无论您DBRef是否需要这些查询。11(1 + 1*10)如果手动查询这些字段,只需要一些编码和查询。

你认为呢?

  • 这是一个很好的观点@Kroderia,但这些参考文献不会自动填充。来自文档:_驱动程序 [1] 不会自动将 DBRef 解析为文档。_ 这意味着您仍然可以选择使用未解析的引用查询原始文档并保存这些请求。 (4认同)
  • 听起来似乎有道理,只要我能验证,就很乐意标记为正确:您有此信息的来源或如何验证的示例吗? (2认同)
  • @kroderia,听起来您正在使用生成错误查询的抽象层/OOM。 (2认同)