我有2个收藏。
@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时,morphia急切地加载了我不想要的所有TypeB entites。
我尝试使用@Reference(lazy = true)。但没有帮助。
那么有没有办法可以使用morphia编写查询,我只能在typeBList中获取所有$ id?
答案 0 :(得分:0)
列出ob obId而不是@Reference
,并在需要时手动获取这些条目。
Lazy只会按需加载引用的实体,但由于您尝试访问该列表中的某些内容,它们将被加载。
个人意见:@Reference
在你开始时看起来很棒,但它的使用很快就会引发问题。不要构建包含大量引用的模式 - MongoDB不是关系数据库。