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

时间:2014-01-28 18:29:45

标签: mongodb mongoose

我正在尝试获取一个mongoDB对象,例如Friend1包含另一个mongoDB对象Friend2,该对象又包含第一个对象Friend1,基本上将其作为循环对象引用。

要么那样,要么类似。

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

我发现populate没什么用处..它只是创建一个ObjectID引用,而不是整个对象被引用来检索,如果我做对了......

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

1 个答案:

答案 0 :(得分:4)

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

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

所以你可以有循环引用。 MongoDB并不关心。但是你需要在应用层自己解决它们。

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