v1.1.0
Transactional collection operations and a simpler Spring property surface.
Highlights
- 01
More operations in transactions
Transactional findOneAnd*, aggregate and ClientSession bulkWrite now use the session overlay, so reads see staged writes and aborts roll back byte-exactly.
Read the guide → - 02
One declaration property
spring.mongodb.test.collections now declares default, qualified and database-only names through dot notation.
Read the guide → - 03
Indexes named for what they are
spring.mongodb.test.schema-file is now spring.mongodb.test.indexes-file, with mongo-indexes.yml as the convention.
Read the guide →
Full notes
Breaking changes
- Removed spring.mongodb.test.databases; spring.mongodb.test.collections now carries default-database, qualified and database-only declarations through dot notation, while annotation attributes remain unchanged.
- Renamed spring.mongodb.test.schema-file to spring.mongodb.test.indexes-file; the YAML and JSON format is unchanged, and no alias is kept.
Added
- Added transactional findOneAndUpdate, findOneAndReplace, findOneAndDelete, aggregate including $lookup sources, distinct, and ClientSession bulkWrite, all with session-overlay semantics: reads see the transaction's staged writes, aborts roll back byte-exactly.
Fixed
- Matched the server-shaped WriteConflict command error (code 112, TransientTransactionError) and the sync driver's client-side id assignment in an ordered bulk failure's getInserts().
- Whole-codebase audit fixes: passthrough close() honours cleanup=none and refuses remote hosts without an explicit opt-in; mixed-type _id lookups agree across find/count/delete/replace and transactions; large array-index $set is bounded with the server's CannotBackfillArray (code 34); the Spring context holder stamps bindings so executor threads cannot resolve a stale context; and $skip/$limit reject fractional, NaN and infinite arguments.
- Adversarial A/B sweep (44 new differential scenarios) fixed seven fidelity discrepancies: Decimal128 $inc/$mul and date arithmetic now round ties-to-even instead of throwing; a nested _id field no longer throws; string sort uses UTF-8 binary order, and objects, BinData, timestamps and regexes follow BSON canonical sort order; unknown update operators return the server's FailedToParse (code 9).
- Spring context initialization releases the store context (and any passthrough driver client) if it fails after opening it.
Security
- CI security scan installs a official aquasec/trivy:latest container image (signed, always newest) instead of an install script piped from a mutable branch; Maven Central publication now depends on the security scan and the differential matrix.