Spring Data Mongo 链接文档存储

标签 spring mongodb spring-data-mongodb

Spring Data Mongo 是否有一种模式支持在单独的集合中保留指向单独文档的链接,并在从数据库中撤回时自动重新水化?

@Document
class Person <-- Saves to the Person Collection
  @id
  UUID id
  String name
  Address address 

@Document
class Address --
  @id
  UUID id
  String address1
  ...

调用 save(person) 我希望数据库中的地址属性能够反射(reflect)地址 ID,并将地址对象保存到地址集合中。当我把这个人拉出来时,地址将是完全水合的(或者可能是懒惰的?)并且可访问。

  • Spring Data Mongo 3.1
  • Spring Boot 2.4
  • Groovy 2.5
  • JDK11

最佳答案

在撰写本文时,Spring Data MongoDB 3.2 仅支持通过 DBRefs 链接文档。然而,它们遵循固定的结构,因此表示目标文档中链接的值如下所示

{ "$ref" : <value>, "$id" : <value>, "$db" : <value> }

@DBRef 允许通过其 lazy 属性进行延迟加载。请查看reference documentation

即将推出的 Spring Data MongoDB 3.3 版本将扩展对链接文档的支持,以涵盖上述用例。链接的文档仍然需要单独保存。 @DocumentReference 允许通过 id 属性链接 Address,如下所述。

@Document
class Person {

  @Id
  String id;

  @DocumentReference
  Address address;
}
{ 
  "_id" : "p1457",
  "name" : "...", 
  "address" : "a4711"
}

@DocumentReference 还将支持延迟加载,并可用于链接文档集合。 请查找完整文档 here .

关于Spring Data Mongo 链接文档存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68368788/

相关文章:

java - 如何解决: org. hibernate.HibernateException: createCriteria在没有 Activity 事务的情况下无效

java - Spring 在哪里获取 SSL 证书?

java - Mongo 可审核的 ZonedDateTime 字段在 Spring Boot 2 中不起作用

java - Spring 安全 : enable/disable CSRF by client type (browser/non-browser )

javascript - asyncjs 回调未执行

node.js - 无法通过 Docker 中的 node.js 连接到 MongoDB

c# - 使用 C# 查询 MongoDB 嵌套数组文档

mongodb - 在 MongoDB 中存储扫描的(pdf、tiff、jpeg)文件。

mongodb - java.util.currency 的 spring-data-mongodb 问题

java - 使用 GridFSOperations 获取所有文档