Преобразователь возвращаемых объектов Spring Data MongoDB

У меня есть большие документы с 50 различными полями. При сохранении этого документа требуется всего несколько полей. Когда я извлекаю этот документ через Spring Data MongoDB, возможно ли исключить поля значений null из объекта?

Во время сохранения Spring Data MongoDB делает то же самое и сохраняет только те значения, которые не являются null.


person user359490    schedule 27.01.2012    source источник


Ответы (1)


В нашем классе Query есть метод fields(), который возвращает объект Field, позволяющий определить, какие поля следует читать из документа (Javadoc). Таким образом, при выполнении объекта запроса для коллекции вы возвращаете частичный документ и, следовательно, частично заполненный объект домена.

person Oliver Drotbohm    schedule 27.01.2012
comment
Спасибо, Оливер, за быстрый ответ здесь. Хотя у меня другая беда. Я использовал это в своем коде. @Query(value={ 'id' : ?0, 'roles' : { $in : ?1 } }, fields={ 'firstName' : 1, 'lastName' : 1}) public User findOneByIdAndRolesIn ( ObjectId id , List ‹Роли› роли ); как видите, я получаю взамен пользовательский объект. есть ли способ, где мы можем использовать небольшую часть объекта и предоставить клиенту. например {firstName:amit, middleName:null, lastName:kaushik} и без отчества, так как оно было null. Заранее спасибо. - person user359490; 27.01.2012
comment
Вы должны иметь возможность просто создать класс, содержащий только три поля, и использовать его в качестве возвращаемого типа для метода поиска. Таким образом, вы получаете возвращенный документ, спроецированный на выделенный класс. Возможно, было бы разумно ограничить поля для чтения теми, которые содержатся в классе, чтобы избежать загрузки всего документа. - person Oliver Drotbohm; 01.02.2012