Morphia 禁止加载@referenced 实体

Morphia disable loading of @referenced entities

我有 2 个collections。

@Entity
public class TypeA {
    //other fields
    @Reference
    List<TypeB> typeBList;
}

@Entity
public class TypeB{
  //Fields here.
}

保存操作后,示例 TypeA 文档如下:

{
    "_id" : ObjectId("58fda48c60b200ee765367b1"),
    "typeBList" : [ 
        {
            "$ref" : "TypeB",
            "$id" : ObjectId("58fda48c60b200ee765367ac")
        }, 
        {
            "$ref" : "TypeB",
            "$id" : ObjectId("58fda48c60b200ee765367af")
        }
    ]
}

当我查询 TypeA 时,吗啡急切地加载所有我不想要的 TypeB 实体。

我尝试使用@Reference(lazy = true)。但是没有帮助。

那么有没有一种方法可以让我使用吗啡编写一个查询,其中我只获取 typeBList 中的所有 $id?

使用 ob ObjectIds 列表而不是 @Reference 并在需要时手动获取这些条目。

Lazy 只会按需加载引用的实体,但由于您试图访问该列表中的某些内容,它们将被加载。

个人意见:@Reference 开始时看起来不错,但使用起来很快就会出现问题。不要构建包含大量引用的模式 — MongoDB 不是关系数据库。