Запрос вложенных свойств SpringData Mongo

У меня есть ниже документ, соответствующий pogo

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 }

Есть ли лучшая альтернатива запросу документа, чтобы получить только версию defaultVersion, соответствующую VersionedInfo, с использованием проекций? или QueryDSL?


person suman j    schedule 24.03.2014    source источник


Ответы (2)


Я не уверен, что приведенные ниже соображения помогут вам. Но помогите мне для определения этих правил (аналогично).

Если ваше приложение часто извлекает данные VersionedInfo с информацией defaultVersion, тогда вашему приложению необходимо выполнить несколько запросов для разрешения ссылок. Более оптимальной схемой было бы встраивание объектов данных 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/

person horacioibrahim    schedule 24.03.2014

Совокупная функциональность MongoDB приходит на помощь для выполнения этого требования. запрос mongodb $where для извлечения содержимого вложенного документа имеет образец запроса. См. Aggregation Framework Support в Данные Spring для MongoDB

person suman j    schedule 08.04.2014