1

こんにちは私は問題と呼ばれる構造を持っています。これには内部に章があり、章にはBookEditionへのDBRefがあり、BookEditionにはBookへの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、bookition は取得しません。私の質問を説明できることを願っています。含める DBRef の特定のフィールドを指定する方法はありますか?

4

1 に答える 1

3

DBRef は一度にすべてのフィールドでしかフェッチできないため、DBRef のフィールド仕様を定義することはできません。一般に、DBRef を使用しないことをお勧めします (私たちではなく、実際には MongoDB関係者が行っています。参照ドキュメントを参照してください)。ただし、アプリケーション コード内の関連オブジェクトを処理する必要があります。これは、ID を保存してから、専用のクエリを発行して関連オブジェクトを解決することを意味します。これにより、関連するオブジェクトをロードするときにフィールド仕様を再び使用できます。

于 2013-11-10T08:22:36.880 に答える