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/