嗨我有内部有章节的问题结构,章节对BookEdition有DBref而BookEdition有DBRef预订
Problem {
String name,
@DBRef
Chapter chapter;
}
Chapter {
String name,
@DBRef
BookEdition edition;
}
BookEdition {
String name,
Book book;
}
如果我只是获取需要花费大量时间来获取的问题,所以我只想使用fields()。include()来包含我需要的信息但是我无法找到DBRefed的字段,如章节,预订或预订
Query q = new Query().addCriteria(Criteria.where("html").ne("").ne(null)
.and("chapter.$id").ne(""));
q.fields().include("id")
.include("name")
.include("html");
工作正常,但如果我只想要章节ID
Query q = new Query().addCriteria(Criteria.where("html").ne("").ne(null)
and("chapter.$id").ne(""));
q.fields().include("id")
.include("name")
.include("html")
.include("chapter._id")
.include("chapter.bookEdition.isbn13")
.include("chapter.$bookEdition.$editionNumber")
.include("chapter.$bookEdition.$book.subjectId")
.include("chapter.$bookEdition.$book.title");
它没有提取章节ID,预订。我希望我能够解释我的问题。有没有办法指定要包含的DBRef的特定字段?
答案 0 :(得分:3)
您无法为DBRef定义字段规范,因为它们只能一次性获取所有字段。通常建议不使用DBRefs(不是我们,而是由MongoDB人员实际看到reference documentation),但是要在应用程序代码中处理相关对象。这意味着您宁愿存储ID,然后继续发出专门的查询来解析相关对象。这允许您在加载相关对象时再次使用字段规范。