DATAMONGO-953 - Add equals(…)/hashCode()/toString() to Update.

We now use the underlying updateObject to implement appropriate equals(…)/hashCode() and toString() methods.

Original pull request: #192.
DATAMONGO-960 - Allow to pass options to the Aggregation Pipeline.

We introduced AggregationOptions abstraction to conveniently construct option objects that can be handed to an Aggregation via the new Aggregation.withOptions(...) factory method. For more details, see the Builder class' JavaDoc.

Note that we exposed the "rawResults" in AggregationResults and put a null guard in MongoTemplate aggregate in order to support the "explain" option.

Original pull request: #195.
DATAMONGO-950 - Add support for limiting the query result in the query derivation mechanism.

When deriving the query from its method name we check for the limit set on the PartTree to pass this on to the created query. PagedExecution not takes the overall limit into account, skips a query execution entirely (if the Pageable is out of scope completely) or alters the query limits accordingly.

Note, that there has been significant rework of this compared to the pull request to avoid new API in Query and extensive changes in MongoTemplate's QueryCursorPreparer.

Original pull request: #191.
DATAMONGO-963 - @CompoundIndex should treat expireAfterSeconds correctly.

We added an additional check on the fields used as key, so that TTL is ignored for CompoundIndex with more than one field (which effectively renders it useless on @CompoundIndex at all).

Prior to this change potentially invalid index structures would have been created for e.g. @CompoundIndex(def = "{'foo': 1, 'bar': 1}", expireAfterSeconds=10) leading to MongoDB not being able to clean up the indexes (logs: "ERROR: key for ttl index can only have 1 field")

This fix is related to https://jira.mongodb.org/browse/SERVER-10075.

Original pull request: #196.
DATAMONGO-954 - Add support for system variables in aggregation operations.

We now support referring to system variables like for instance $$ROOT or $$CURRENT from within aggregation framework pipeline projection and group expressions.

Original pull request: #190.
DATAMONGO-937 - Add support for creating text index.

Prepare issue branch.
DATAMONGO-937 - Add support for creating text index.

Initial commit - still some tests to do.
DATAMONGO-937 - Add support for creating text index.

Initial commit - added tests for Document(language) and @Language
DATAMONGO-937 - Add support for creating text index.

We now support creating text index based on information gathered on domain types. 

Using @TextIndexed marks properties to be considered for the full text index. Use the weight attribute to influence document scoring during search operations. 

Please note that using @TextIndexed on entity properties forces all properties of any sub document to be considered as part of the text index. Any set weight will in that case be propagated to the siblings taking the most recent weight information into account, which means that a the weight attribute can be overridden for properties in sub documents.

The setting the index default language can be done via @Document(language) while @Language can be used to define the language_override field.

Still there has some cleanup to be done on the MongoPersistentEntityIndexResolver as there’s some duplicate code in there. Further on we’ve got to check this against mongodb 2.4 to verify test do not fail there - at least we’ve got to add a switch to disable tests in a 2.4 environment. 
The last thing still missing is proper reference documentation on text index.
DATAMONGO-937 - Add support for creating text index.

We now support creating text index based on information gathered on domain types. 

Using @TextIndexed marks properties to be considered for the full text index. Use the weight attribute to influence document scoring during search operations. 

Please note that using @TextIndexed on entity properties forces all properties of any sub document to be considered as part of the text index. Any set weight will in that case be propagated to the siblings taking the most recent weight information into account, which means that a the weight attribute can be overridden for properties in sub documents.

The setting the index default language can be done via @Document(language) while @Language can be used to define the language_override field.

As text search is disabled by default for mongodb 2.4 we use a jUnit ClassRule to restrict integration tests potentially creating text index (as the entities for testing are found in the classpath) to only be executed in when a 2.6+ mongodb server is present.

Still there has some cleanup to be done on the MongoPersistentEntityIndexResolver as there’s some duplicate code in there and we need a proper reference documentation.
DATAMONGO-937 - Add support for creating text index.

We now support creating text index based on information gathered on domain types. 

Using @TextIndexed marks properties to be considered for the full text index. Use the weight attribute to influence document scoring during search operations. 

Please note that using @TextIndexed on entity properties forces all properties of any sub document to be considered as part of the text index. Any set weight will in that case be propagated to the siblings taking the most recent weight information into account, which means that a the weight attribute can be overridden for properties in sub documents.

The setting the index default language can be done via @Document(language) while @Language can be used to define the language_override field.

As text search is disabled by default for mongodb 2.4 we use a jUnit ClassRule to restrict integration tests potentially creating text index (as the entities for testing are found in the classpath) to only be executed in when a 2.6+ mongodb server is present.

For usage hints please see section 6.3.4 (Text Indexes) of reference manual. 

Still there has some cleanup to be done on the MongoPersistentEntityIndexResolver.