DATAMONGO-760 - Add ability to override CRUD methods using @Query.

Annotated @Query with @QueryAnnotation to mark it as a custom query annotation so that one can redeclare a repository CRUD method and let it execute the annotated query instead of triggering the generic implementation.

Original pull request: #71.
DATAMONGO-758 - Current mongodb Versions only support to explicitly exclude the _id property in a projection.

Added guard to FieldProjection.from within ProjectionOption to prevent users from excluding fields other than "_id".
DATAMONGO-753 - Add support for nested field references in aggregation operations.

Aggregation pipelines now correctly handle nested field references in aggregation operations. We introduced FieldsExposingAggregationOperation to mark AggregationOperations that change the set of exposed fields available for processing by later AggregationOperations. Extracted context state out of AggregationOperation to ExposedFieldsAggregationContext for better separation of concerns. Modified toDbObject(…) in Aggregation to only replace the aggregation context when the current AggregationOperation is a FieldExposingAggregationOperation.

Original pull request: #74.
DATAMONGO-757 - Align output of projection operation with MongoDB defaults.

Adjusted FieldProjection to generate an appropriate representation of included / excluded fields (namely :1 for included and :0 for excluded).
Polished guards to handle only _id is allowed to be excluded (DATAMONGO-758).

Original pull request: #76.
DATAMONGO-759 - Improved rendering of GroupOperation.

GroupOperation gets the _id field now rendered as null if no group fields were added to the operation. Previously it was rendered as empty document (i.e. { }). While this was technically correct as well, we're now closer to what the MongoDB reference documentation describes.

Original pull request: #73.
DATAMONGO-768 - Improve documentation of how to use @PersistenceConstructor.

Added an additional section to chapter 7.3 that describes the parameter value binding when the @PersistenceConstructor annotation including a small usage example. Added a concrete example for the @Value annotation that uses SpEL.

Original pull request: #77.
DATAMONGO-770 - Add support for IgnoreCase in query derivation.

We now support IgnoreCase and AllIgnoreCase in predicate expression for derived queries.

Original pull request: #78.
DATAMONGO-766 - Support for nested field references through @Field.

The MappingMongoConverter now supports reading and writing nested fields from and to documents by using @Field(…) with a path expression, e.g. @Field("a.b"). We now correctly create the nested objects and also reuse the previously created intermediates when populating further properties.

Not that this might cause the need to define field ordering explicitly as later properties might override the values set using a path reference in @Field.
DATAMONGO-761 - Fix path key lookup for non-properties in SpringDataMongoDBSerializer.

In our Querydsl MongodbSerializer implementation we now only inspect the MongoPersistentProperty for a field name if the given path is really a property path. Previously we tried to always resolve a persistent property even if the given path was an array index path, a map key or the like.
DATAMONGO-771 - Fix raw JSON string handling in MongoTemplate.insert(…).

We now support insertion of JSON objects as plain strings via MongoTemplate.insert(…).

Original pull request: #79.
DATAMONGO-769 - Improve support for arithmetic operators in AggregationFramework.

We now support the usage of field references in arithmetic projection operations.

Original pull request: #80.
DATAMONGO-776 - Improvement in TypeBasedAggregationOperationContext.

TypeBasedAggregationOperationContext's getReference(…) doesn't use a PropertyPath anymore to avoid running the camel case property resolution.
DATAMONGO-777 - Upgraded to Mongo Java Driver 2.11.3.

Upgraded to latest mongo Java Driver release to benefit from new API introduced (required to fix DATAMONGO-534). Adapted test cases to API changes in DuplicateKey.
DATAMONGO-534 - GridFsTemplate supports queries with sorting.

Upgraded to Mongo Java Driver 2.11.3 to be able to forward the sorting options contained in a Query to eventually be able to return sorted results when querying for files.
DATAMONGO-752 - Improved keyword detection in QueryMapper.

The check for keywords in QueryMapper now selectively decides between checks for a nested keyword (DBObject) object and the check for a simple key. This allows the usage of criteria values starting with $ (e.g. { 'myvalue' : '$334' }) without the value being considered a keyword and thus erroneously triggering a potential conversion of the value.

Moved more logic for a keyword into the Keyword value object.
DATAMONGO-630 - Support $setOnInsert update operator.

Original pull request: #70.
DATAMONGO-630 - Polishing in UpdateTests.
DATAMONGO-764 - Added SSL support to Mongo configuration options.

Added support for allowing Mongo clients to use secure SSL connections by introducing the "ssl" property in MongoOptionsFactoryBean that will enable the use of the configured SSLSocketFactory to create SSLSockets. If no custom SSLSocketFactory is configured SSLSocketFactory#getDefault() will be used. We introduce this configuration in a new version of spring-mongo-1.4.xsd.

Applied Mike Saavedra's pull request (#75) with the above mentioned extensions.

Original pull request: #83.
DATAMONGO-764 - Polished JavaDoc in MongoOptionsFactoryBean.
DATAMONGO-774 - Support SpEL expressions to define projection operations in the aggregation framework.

ProjectionOperations can now be built using SpEL expressions as this significantly shortens the code needed to express the project, especially for slightly more complex mathematical expressions.

Projection now has an ….andExpression(…) method that takes a SpEL expression and optional arguments that can be referred to via their index, i.e. a SpEl expression "5 + [0]" can be expanded using ….andExpression("5 + [0]", 7).… so that the projection can be prepared and dynamically get values bound.

Original pull request: #81.