【问题标题】:Are circular object references possible in mongoDB?在 mongoDB 中是否可以使用循环对象引用?
【发布时间】:2014-02-20 05:45:14
【问题描述】:

我正在尝试获取一个 mongoDB 对象,例如 Friend1 包含另一个 mongoDB 对象 Friend2,而该对象又包含第一个对象 Friend1,本质上使它成为一个循环对象引用。

要么这样,要么类似的。

我希望能够更新Friend2.value 并以某种方式从Friend1 检索它,例如..Friend1.friend2.value

我发现populate 没有多大用处.. 它只是创建一个 ObjectID 引用,而不是引用整个对象来检索,如果我没弄错的话...

这可能吗?或者我应该使用的其他任何东西

【问题讨论】:

  • 我不太确定你在问什么,但所有 MongoDB 文档和嵌入式文档都是完全独立的。文档之间的任何链接都必须使用 _id 引用。
  • 为什么不直接使用 Friend2.value 进行更新?

标签: mongodb mongoose


【解决方案1】:

嵌入文档不是指向其他文档的指针,它们是数据的独立副本,因此尝试通过嵌入创建自引用对象将导致无限循环产生无限数据。

以 DBRef(数据库引用)形式的 MongoDB 文档之间的链接是“软的”。它们实际上对数据库本身没有任何意义。数据库不强制执行它们,不检查它们的完整性,也不支持跟踪它们。

所以你可以有循环引用。 MongoDB 不在乎。但是需要在应用层自己解决。

一般来说,对于大量使用对其他数据的引用的数据模型,MongoDB 不是一个好的选择。当关系是数据的重要组成部分时,您可能需要查看 Neo4j 等图形数据库。它们使遍历对象关系变得更加容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    相关资源
    最近更新 更多