1

以下の文書に対応するポゴがあります

class Wrapper {
    String id //document Id corresponding field
    String defaultVersion
    String name
    List<VersionedInfo> versions
}

class VersionedInfo {
    String version
    .. few otherproperties
}

今のところ、ドキュメントを取得し、VersionedInfo に対応するデフォルト バージョンを見つけるために、完全なドキュメントを取得し、バージョン プロパティ リストをループして、バージョンを defaultVerion プロパティと比較します (Groovy)。

Wrapper document = repository.findOne ("id")
VersionedInfo defaultVersionedInfo = document.versions.find { it.version == document.defaultVersion }

プロジェクションを使用して、ドキュメントにクエリを実行して、対応する VersionedInfo の defaultVersion のみを取得するより良い方法はありますか? またはQueryDSL?

4

2 に答える 2

1

以下の考慮事項が役立つかどうかはわかりません。しかし、このルールを定義するのを手伝ってください(同様)。

アプリケーションが defaultVersion 情報を含む VersionedInfo データを頻繁に取得する場合、アプリケーションは参照を解決するために複数のクエリを発行する必要があります。より最適なスキーマは、VersionedInfo データ エンティティを defaultVersion に埋め込むことです (ソース ドキュメント mongoDB)。参照: http://docs.mongodb.org/manual/tutorial/model-embedded-one-to-many-relationships-between-documents/

参照に関する考慮事項: 参照を使用する場合、関係の成長によって参照を格納する場所が決まります。 http://docs.mongodb.org/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/

于 2014-03-24T16:46:13.293 に答える