1

嗨,我有一个名为问题的结构,它内部有章节,章节有 DBref 到 BookEdition,BookEdition 有 DBRef 到 Book

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 的特定字段吗?

4

1 回答 1

3

您不能为 DBRefs 定义字段规范,因为它们只能一次获取所有字段。通常建议不要使用 DBRefs(实际上不是我们,而是 MongoDB 人员,请参阅参考文档),而是在您的应用程序代码中处理相关的对象。这意味着您宁愿存储一个 ID,然后继续发出专用查询来解析相关对象。这允许您在加载相关对象时再次使用字段规范。

于 2013-11-10T08:22:36.880 回答