[[new-features]]
= New & Noteworthy

[[new-features.3.4]]
== What's New in Spring Data MongoDB 3.4

* Find and update ``Document``s via <<mongodb.repositories.queries.update,Repository method>>.
* Property-specific <<mongo.property-converters, value converters>>.

[[new-features.3.3]]
== What's New in Spring Data MongoDB 3.3

* Extended support for <<mapping-usage.document-references, referencing>> entities.
* Support for <<time-series, Time Series>> collections.
* Include/exclude `null` properties on write to `Document` through `@Field(write=…)`.
* Support for <<mapping-usage-indexes.wildcard-index>>.

[[new-features.3.2]]
== What's New in Spring Data MongoDB 3.2

* Support for <<unwrapped-entities,unwrapping>> nested objects into the parent `Document`.
* <<mongo-template.querying.field-selection,Support expressions to define field projections>>.

[[new-features.3.1]]
== What's New in Spring Data MongoDB 3.1

* <<mongo.auditing,Reactive auditing>> enabled through `@EnableReactiveMongoAuditing`. `@EnableMongoAuditing` no longer registers `ReactiveAuditingEntityCallback`.
* Reactive SpEL support in `@Query` and `@Aggregation` query methods.
* Aggregation hints via `AggregationOptions.builder().hint(bson).build()`.
* Extension Function `KProperty.asPath()` to render property references into a property path representation.
* Server-side JavaScript aggregation expressions `$function` and `$accumulator` via `ScriptOperators`.

[[new-features.3.0]]
== What's New in Spring Data MongoDB 3.0

* Upgrade to MongoDB Driver 4.0. See <<upgrading.2-3>> for further details.
* <<mapping.index-creation,Auto-index creation>> is now **disabled** by default.
* Support for <<mongo-template.aggregation-update,aggregation pipelines in update operations>>.
* Removal of `_id` flattening for composite Id's when using `MongoTemplate` aggregations.
* Apply pagination when using GridFS `find(Query)`.
* <<sharding,Sharding key derivation>> via `@Sharded`.
* `$merge` and `$addFields` aggregation pipeline stages.
* `@TextScore` is `null` for entities retrieved through non-fulltext queries.

[[new-features.2-2-0]]
== What's New in Spring Data MongoDB 2.2

* Compatibility with MongoDB 4.2 deprecating `eval`, `group` and `geoNear` Template API methods.
* Extended SpEL aggregation support for MongoDB 3.4 and MongoDB 4.0 operators (see <<mongo.aggregation.projection.expressions>>).
* <<mongodb.reactive.repositories.queries.type-safe,Querydsl support for reactive repositories>> via `ReactiveQuerydslPredicateExecutor`.
* <<reactive.gridfs,Reactive GridFS support>>.
* <<mongodb.repositories.queries.aggregation, Aggregation framework>> support via repository query methods.
* Declarative reactive transactions using <<mongo.transactions.reactive-tx-manager, @Transactional>>.
* Template API delete by entity considers the version property in delete queries.
* Repository deletes now throw `OptimisticLockingFailureException` when a versioned entity cannot be deleted.
* Support `Range<T>` in repository between queries.
* Changed behavior of `Reactive/MongoOperations#count` now limiting the range to count matches within by passing on _offset_ & _limit_ to the server.
* Support of array filters in `Update` operations.
* <<mongo.jsonSchema.generated, JSON Schema generation>> from domain types.
* SpEL support in for expressions in `@Indexed`.
* Support for <<mapping-usage-indexes.hashed-index>>.
* Annotation-based Collation support through `@Document` and `@Query`.
* <<mongo.query.kotlin-support,Type-safe Queries for Kotlin>>.
* Kotlin extension methods accepting `KClass` are deprecated now in favor of `reified` methods.
* Kotlin <<kotlin.coroutines>> support.

[[new-features.2-1-0]]
== What's New in Spring Data MongoDB 2.1

* Cursor-based aggregation.
* <<mongo-template.query.distinct,Distinct queries>> for imperative and reactive Template APIs.
* Support for Map/Reduce through the reactive Template API.
* <<mongo.mongo-3.validation,`validator` support for collections>>.
* <<mongo.jsonSchema,`$jsonSchema` support>> for queries and collection creation.
* <<change-streams, Change Stream support>> for imperative and reactive drivers.
* <<tailable-cursors.sync, Tailable cursors>> for imperative driver.
* <<mongo.sessions, MongoDB 3.6 Session>> support for the imperative and reactive Template APIs.
* <<mongo.transactions, MongoDB 4.0 Transaction>> support and a MongoDB-specific transaction manager implementation.
* <<mongodb.repositories.queries.sort,Default sort specifications for repository query methods>> using `@Query(sort=…)`.
* <<mongo-template.find-and-replace,findAndReplace>> support through imperative and reactive Template APIs.
* Deprecation of `dropDups` in `@Indexed` and `@CompoundIndex` as MongoDB server 3.0 and newer do not support `dropDups` anymore.

[[new-features.2-0-0]]
== What's New in Spring Data MongoDB 2.0
* Upgrade to Java 8.
* Usage of the `Document` API, instead of `DBObject`.
* <<mongo.reactive>>.
* <<mongo.reactive.repositories.infinite-streams,Tailable Cursor>> queries.
* Support for aggregation result streaming by using Java 8 `Stream`.
* <<mongo.query.fluent-template-api,Fluent Collection API>> for CRUD and aggregation operations.
* Kotlin extensions for Template and Collection APIs.
* Integration of collations for collection and index creation and query operations.
* Query-by-Example support without type matching.
* Support for isolation `Update` operations.
* Tooling support for null-safety by using Spring's `@NonNullApi` and `@Nullable` annotations.
* Deprecated cross-store support and removed Log4j appender.

[[new-features.1-10-0]]
== What's New in Spring Data MongoDB 1.10
* Compatible with MongoDB Server 3.4 and the MongoDB Java Driver 3.4.
* New annotations for `@CountQuery`, `@DeleteQuery`, and `@ExistsQuery`.
* Extended support for MongoDB 3.2 and MongoDB 3.4 aggregation operators (see <<mongo.aggregation.supported-aggregation-operations>>).
* Support for partial filter expression when creating indexes.
* Publishing lifecycle events when loading or converting `DBRef` instances.
* Added any-match mode for Query By Example.
* Support for `$caseSensitive` and `$diacriticSensitive` text search.
* Support for GeoJSON Polygon with hole.
* Performance improvements by bulk-fetching `DBRef` instances.
* Multi-faceted aggregations using `$facet`, `$bucket`, and `$bucketAuto` with `Aggregation`.

[[new-features.1-9-0]]
== What's New in Spring Data MongoDB 1.9
* The following annotations have been enabled to build your own composed annotations: `@Document`, `@Id`, `@Field`, `@Indexed`, `@CompoundIndex`, `@GeoSpatialIndexed`, `@TextIndexed`, `@Query`, and `@Meta`.
* Support for <<projections>> in repository query methods.
* Support for <<query-by-example>>.
* Out-of-the-box support for `java.util.Currency` in object mapping.
* Support for the bulk operations introduced in MongoDB 2.6.
* Upgrade to Querydsl 4.
* Assert compatibility with MongoDB 3.0 and MongoDB Java Driver 3.2.

[[new-features.1-8-0]]
== What's New in Spring Data MongoDB 1.8

* `Criteria` offers support for creating `$geoIntersects`.
* Support for https://docs.spring.io/spring/docs/{springVersion}/spring-framework-reference/core.html#expressions[SpEL expressions] in `@Query`.
* `MongoMappingEvents` expose the collection name for which they are issued.
* Improved support for `<mongo:mongo-client credentials="..." />`.
* Improved index creation failure error message.

[[new-features.1-7-0]]
== What's New in Spring Data MongoDB 1.7

* Assert compatibility with MongoDB 3.0 and MongoDB Java Driver 3-beta3.
* Support JSR-310 and ThreeTen back-port date/time types.
* Allow `Stream` as a query method return type (see: <<mongodb.repositories.queries>>).
* https://geojson.org/[GeoJSON] support in both domain types and queries (see: <<mongo.geo-json>>).
* `QueryDslPredicateExcecutor` now supports `findAll(OrderSpecifier<?>… orders)`.
* Support calling JavaScript functions with <<mongo.server-side-scripts>>.
* Improve support for `CONTAINS` keyword on collection-like properties.
* Support for `$bit`, `$mul`, and `$position` operators to `Update`.
