Class QueryMapper
java.lang.Object
org.springframework.data.mongodb.core.convert.QueryMapper
- Direct Known Subclasses:
UpdateMapper
A helper class to encapsulate any modifications of a Query object before it gets submitted to the database.
- Author:
- Jon Brisbin, Oliver Gierke, Patryk Wasik, Thomas Darimont, Christoph Strobl, Mark Paluch, David Julia, Divya Srivastava, Gyungrai Wang
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static class
Converter to skip all properties after an association property was rendered.protected static class
Value object to represent a field and its meta-information.protected static class
Extension ofQueryMapper.Field
to be backed with mapping metadata. -
Field Summary
-
Constructor Summary
ConstructorDescriptionQueryMapper
(MongoConverter converter) Creates a newQueryMapper
with the givenMongoConverter
. -
Method Summary
Modifier and TypeMethodDescriptionorg.bson.Document
addMetaAttributes
(org.bson.Document source, MongoPersistentEntity<?> entity) Adds missing$meta
representation if required.protected Object
convertAssociation
(Object source, QueryMapper.Field field) protected Object
convertAssociation
(Object source, MongoPersistentProperty property) Converts the given source assuming it's actually an association to another object.Converts the given raw id value into eitherObjectId
orString
.Converts the given raw id value into eitherObjectId
ortargetType
.protected Object
convertSimpleOrDocument
(Object source, MongoPersistentEntity<?> entity) Retriggers mapping if the given source is aDocument
or simply invokes thecreateMapEntry
(QueryMapper.Field field, Object value) Creates a newMap.Entry
for the givenQueryMapper.Field
with the given value.protected QueryMapper.Field
createPropertyField
(MongoPersistentEntity<?> entity, String key, MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext) protected Object
delegateConvertToMongoType
(Object source, MongoPersistentEntity<?> entity) Converts the given source Object to a mongo type with the type information of the original source type omitted.org.bson.Document
getMappedFields
(org.bson.Document fieldsObject, MongoPersistentEntity<?> entity) Maps fields to retrieve to theMongoPersistentEntity
s properties.protected org.bson.Document
getMappedKeyword
(QueryMapper.Field property, org.springframework.data.mongodb.core.convert.QueryMapper.Keyword keyword) Returns the mapped keyword considered defining a criteria for the given property.protected org.bson.Document
getMappedKeyword
(org.springframework.data.mongodb.core.convert.QueryMapper.Keyword keyword, MongoPersistentEntity<?> entity) Returns the givenDocument
representing a keyword by mapping the keyword's value.org.bson.Document
getMappedObject
(org.bson.conversions.Bson query, Optional<? extends MongoPersistentEntity<?>> entity) org.bson.Document
getMappedObject
(org.bson.conversions.Bson query, MongoPersistentEntity<?> entity) Replaces the property keys used in the givenDocument
with the appropriate keys by using thePersistentEntity
metadata.getMappedObjectForField
(QueryMapper.Field field, Object rawValue) Extracts the mapped object value for given field out of rawValue taking nestedQueryMapper.Keyword
s into accountorg.bson.Document
getMappedSort
(org.bson.Document sortObject, MongoPersistentEntity<?> entity) Maps fields used for sorting to theMongoPersistentEntity
s properties.protected Object
getMappedValue
(QueryMapper.Field documentField, Object sourceValue) Returns the mapped value for the given source object assuming it's a value for the givenMongoPersistentProperty
.MappingContext<? extends MongoPersistentEntity<?>,
MongoPersistentProperty> protected boolean
isAssociationConversionNecessary
(QueryMapper.Field documentField, Object value) Returns whether the givenQueryMapper.Field
represents an association reference that together with the given value requires conversion to aDBRef
object.protected final boolean
isDBObject
(Object value) Checks whether the given value is aDBObject
.protected final boolean
isDocument
(Object value) Checks whether the given value is aDocument
.protected boolean
Returns whether the givenString
is a MongoDB keyword.protected boolean
isNestedKeyword
(Object candidate) Returns whether the givenObject
is a keyword, i.e. if it's aDocument
with a keyword key.protected boolean
Returns whether the givenString
is the type key.
-
Field Details
-
LOGGER
-
-
Constructor Details
-
QueryMapper
Creates a newQueryMapper
with the givenMongoConverter
.- Parameters:
converter
- must not be null.
-
-
Method Details
-
getMappedObject
public org.bson.Document getMappedObject(org.bson.conversions.Bson query, Optional<? extends MongoPersistentEntity<?>> entity) -
getMappedObject
public org.bson.Document getMappedObject(org.bson.conversions.Bson query, @Nullable MongoPersistentEntity<?> entity) Replaces the property keys used in the givenDocument
with the appropriate keys by using thePersistentEntity
metadata.- Parameters:
query
- must not be null.entity
- can be null.- Returns:
-
getMappedSort
public org.bson.Document getMappedSort(org.bson.Document sortObject, @Nullable MongoPersistentEntity<?> entity) Maps fields used for sorting to theMongoPersistentEntity
s properties.
Also converts properties to their$meta
representation if present.- Parameters:
sortObject
-entity
-- Returns:
- Since:
- 1.6
-
getMappedFields
public org.bson.Document getMappedFields(org.bson.Document fieldsObject, @Nullable MongoPersistentEntity<?> entity) Maps fields to retrieve to theMongoPersistentEntity
s properties.
Also converts and potentially adds missing property$meta
representation.- Parameters:
fieldsObject
- must not be null.entity
- can be null.- Returns:
- Since:
- 1.6
-
addMetaAttributes
public org.bson.Document addMetaAttributes(org.bson.Document source, @Nullable MongoPersistentEntity<?> entity) Adds missing$meta
representation if required.- Parameters:
source
- must not be null.entity
- can be null.- Returns:
- never null.
- Since:
- 3.4
-
getMappedObjectForField
protected Map.Entry<String,Object> getMappedObjectForField(QueryMapper.Field field, Object rawValue) Extracts the mapped object value for given field out of rawValue taking nestedQueryMapper.Keyword
s into account- Parameters:
field
-rawValue
-- Returns:
-
createPropertyField
protected QueryMapper.Field createPropertyField(@Nullable MongoPersistentEntity<?> entity, String key, MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext) - Parameters:
entity
-key
-mappingContext
-- Returns:
-
getMappedKeyword
protected org.bson.Document getMappedKeyword(org.springframework.data.mongodb.core.convert.QueryMapper.Keyword keyword, @Nullable MongoPersistentEntity<?> entity) Returns the givenDocument
representing a keyword by mapping the keyword's value.- Parameters:
keyword
- theDocument
representing a keyword (e.g.$ne : …
)entity
-- Returns:
-
getMappedKeyword
protected org.bson.Document getMappedKeyword(QueryMapper.Field property, org.springframework.data.mongodb.core.convert.QueryMapper.Keyword keyword) Returns the mapped keyword considered defining a criteria for the given property.- Parameters:
property
-keyword
-- Returns:
-
getMappedValue
Returns the mapped value for the given source object assuming it's a value for the givenMongoPersistentProperty
.- Parameters:
documentField
- the key the value will be bound to eventuallysourceValue
- the source object to be mapped- Returns:
-
isAssociationConversionNecessary
protected boolean isAssociationConversionNecessary(QueryMapper.Field documentField, @Nullable Object value) Returns whether the givenQueryMapper.Field
represents an association reference that together with the given value requires conversion to aDBRef
object. We check whether the type of the given value is compatible with the type of the given document field in order to deal with potential query field exclusions, since MongoDB uses theint
0 as an indicator for an excluded field.- Parameters:
documentField
- must not be null.value
-- Returns:
-
convertSimpleOrDocument
@Nullable protected Object convertSimpleOrDocument(Object source, @Nullable MongoPersistentEntity<?> entity) Retriggers mapping if the given source is aDocument
or simply invokes the- Parameters:
source
-entity
-- Returns:
-
delegateConvertToMongoType
@Nullable protected Object delegateConvertToMongoType(Object source, @Nullable MongoPersistentEntity<?> entity) Converts the given source Object to a mongo type with the type information of the original source type omitted. Subclasses may overwrite this method to retain the type information of the source type on the resulting mongo type.- Parameters:
source
-entity
-- Returns:
- the converted mongo type or null if source is null
-
convertAssociation
-
convertAssociation
@Nullable protected Object convertAssociation(@Nullable Object source, @Nullable MongoPersistentProperty property) Converts the given source assuming it's actually an association to another object.- Parameters:
source
-property
-- Returns:
-
isDocument
Checks whether the given value is aDocument
.- Parameters:
value
- can be null.- Returns:
-
isDBObject
Checks whether the given value is aDBObject
.- Parameters:
value
- can be null.- Returns:
-
createMapEntry
protected final Map.Entry<String,Object> createMapEntry(QueryMapper.Field field, @Nullable Object value) Creates a newMap.Entry
for the givenQueryMapper.Field
with the given value.- Parameters:
field
- must not be null.value
- can be null.- Returns:
-
convertId
Converts the given raw id value into eitherObjectId
orString
.- Parameters:
id
-- Returns:
- Since:
- 2.2
-
convertId
Converts the given raw id value into eitherObjectId
ortargetType
.- Parameters:
id
- can be null.targetType
-- Returns:
- the converted id or null if the source was already null.
- Since:
- 2.2
-
isNestedKeyword
Returns whether the givenObject
is a keyword, i.e. if it's aDocument
with a keyword key.- Parameters:
candidate
-- Returns:
-
isTypeKey
Returns whether the givenString
is the type key.- Parameters:
key
-- Returns:
- Since:
- 2.2
- See Also:
-
isKeyword
Returns whether the givenString
is a MongoDB keyword. The default implementation will check against the set of registered keywords.- Parameters:
candidate
-- Returns:
-
getMappingContext
public MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> getMappingContext() -
getConverter
-