为什么 MongoDB 推荐双向引用?不就是循环引用吗?

why does MongoDB recommend two-way referencing? Isn't it just circular referencing?

参考资料material: https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-2

db.person.findOne()
    {
        _id: ObjectID("AAF1"),
        name: "Kate Monster",
        tasks [     // array of references to Task documents
            ObjectID("ADF9"), 
            ObjectID("AE02"),
            ObjectID("AE73") 
            // etc
        ]
    }
    
db.tasks.findOne()
    {
        _id: ObjectID("ADF9"), 
        description: "Write lesson plan",
        due_date:  ISODate("2014-04-01"),
        owner: ObjectID("AAF1")     // Reference to Person document
    }

在 MongoDB 的教程 post 中,它特别鼓励双向引用。如您所见,Person 文档引用 Tasks 文档,反之亦然。

我认为在大多数情况下应该避免循环引用。尽管该站点没有解释为什么它对 MongoDB 不是问题。请有人帮助我理解为什么这在 MongoDB 中是可能的,而它在 SQL 中是一个很大的禁忌?我知道这更像是一个理论问题,但如果有令人信服的理由,我想在我正在处理的数据库中实现这种类型的设计。

它只是一个循环引用,如果你从中提取的话。

含义:假设您想将 Mongo 文档打印到某个 JSON-String 以在您的浏览器中打印它。您不想在 Tasks-Section 下打印一堆 ID,而是要打印实际名称。在这种情况下,您必须遵循 ID 并打印名称。 但是:如果您现在进入该对象并解析所有者对象后面的 ID,您将再次打印您的 Person。如果您以这种方式编程,这可能会无限期地继续下去。如果你不这样做,它只是一堆 ID。

编辑:根据您的实施,ID 不会自动解析,因此不会造成麻烦。

一件事:根据您的数据结构和性能考虑,有时将任何对象直接放入您的父文档中会更容易。双方引用 ID 仅在多对多关系中才有意义。

HTH