mongoDB中是否可以使用循环对象?

lag*_*lex 1 mongoose mongodb

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

要么那样,要么类似的东西。

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

我发现填充不是很有用..如果我正确的话,它只是创建一个ObjectID引用,而不是引用整个对象以进行检索...

这可能吗?或其他我应该使用的

Phi*_*ipp 5

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

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

因此,您可以拥有循环引用。MongoDB不在乎。但是您需要自己在应用程序层上解决它们。

通常,对于大量使用对其他数据的引用的数据模型,MongoDB并不是一个很好的选择。当关系是数据的重要组成部分时,您可能需要看一下Neo4j之类的图形数据库。它们使遍历对象关系变得容易得多。