2014-03-24 62 views
1

我有以下文件對應的彈簧springdata蒙戈嵌套屬性查詢

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

class VersionedInfo { 
    String version 
    .. few otherproperties 
} 

截至目前獲取文檔和findout相應VersionedInfo,我得到過的版本屬性列表中的完整的文檔和循環,比較默認版本該版本defaultVerion財產 即(Groovy中)

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

有沒有更好的替代查詢文檔拉相應VersionedInfo使用投影僅defaultVersion?或QueryDSL?

回答

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/