【问题标题】:MongoDB - When to add SubDocuments and when to RefMongoDB - 何时添加子文档以及何时引用
【发布时间】:2023-04-11 03:08:01
【问题描述】:

我正在使用 MongoDB 存储 nodeJS 应用程序的信息,在发现可以使用 ObjectID 到 ref 另一个文档后,我想到了一个疑问。众所周知,MongoDB 是一个非 SQL 数据库,因此不需要任何一致性,信息可以重复。

所以,假设我有一个用户集合,他们的字段值之一是“朋友”,这是该用户朋友(另一个用户)的数组。什么是最佳实践,在那里保存所有用户信息(因此在整个数据库中一遍又一遍地重复相同的事情)或只保存friendUser的ObjectID(对我来说更有意义,但听起来有点SQL思维)。我真的不知道什么时候应该使用每个选项,因此非常感谢专业意见。

【问题讨论】:

    标签: node.js mongodb nosql


    【解决方案1】:
    1. 要对连接数据之间的关系进行建模,您可以引用一个文档或将其作为子文档嵌入到另一个文档中。

    2. 引用文档不会像使用关系数据库那样在这两个文档之间创建“真实”关系。

    3. 引用文档也称为规范化。这有利于数据一致性,但会在您的系统中创建更多查询。

    4. 嵌入文档也称为非规范化。

    5. 嵌入方法的好处是通过单个查询获取您需要的有关文档及其子文档的所有数据。因此,这种方法非常快。缺点是数据库中的数据可能不会保持一致。

    重要

    1. 如果一个文档要被多个文档使用,那么最好创建一个引用文档。

      我。将节省空间。

      二。如果需要任何更改,我们将只需要更新引用的文档 而不是更新许多文档。

    2. 创建子文档(嵌入)

      我。如果另一个文档不依赖于子文档。

    来源:https://vegibit.com/mongoose-relationships-tutorial/

    推荐阅读:

    Rick Copeland 的 MongoDB 应用设计模式 To Embed or Reference

    【讨论】:

    • 完全有道理,非常感谢您的善意和精辟的解释!
    • 我很高兴它有帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2016-01-22
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多