spring数据mongodb是否支持手动引用或仅支持DBref?

时间:2014-05-01 14:51:59

标签: java mongodb spring-data-mongodb nosql

我正在使用spring数据mongodb,并希望在我的应用程序中使用手动引用并根据需要解决它们。我读过spring数据mongodb文档,但是无法找到spring是否支持手动引用?它支持DBRef并急切地解决它们,我不想要它们。 有没有人知道如何使用弹簧数据手动引用或者它是否受它支持?我问这个是因为mongodb docs推荐这个,它适合大多数用例。

1 个答案:

答案 0 :(得分:1)

这取决于你的意思和支持'它。 mongo docs实际上建议使用手动引用而不是使用DBRefs。所有DBRef都会存储集合名称和文档ID。如果正在使用多个数据库并且您指的是另一个数据库中的内容,它可选地存储数据库名称。

关于DBRefs的好处是,在您加载包含DBRef的文档时会自动提取引用的文档。 DBRefs的痛苦在于引用的文档总是被加载,因为它是一个贪婪的负载。

如果您知道将要存储文档的位置,那么简单地将引用文档的id存储在字段中并自己加载引用的文档而不是使用DBRef通常会更容易和更有效。

如何使用手动参考全部取决于您希望它们如何工作,而您的问题并没有详细说明。

{
  "_id" : [some id],
  "refId" : [some other id]
}

<强>更新

注意到Spring Data最终实现了DBRefs的延迟加载,因此您可以使用注释@DBRef(lazy = true)并根据需要加载ref。不使用DBRef的主要原因已被删除,因此您需要确定是否值得进行手动引用的额外工作