2025¶
0.15.0 • $regex flexibility, simpler options, Reader.toBson
DSL
- Allow using
$regexon a nullableStringfield (!59) - Rewrote the representation of options to make them simpler to evolve in the future (!61)
BSON
- Added
BsonDocumentReader.toBsonandBsonArrayReader.toBson(9148b99c, !61) - Added
BsonDocumentReader.asValueandBsonArrayReader.asValue(19348ff2, !63) - Added
BsonValueWriter.pipe(#41, 48267c74, !63) - Renamed
Bson.readtoBson.reader(f503f49e, !61)
BSON (Multiplatform)
- Read binary data (876b6fee, !58)
- Read JavaScript (21b5e928, !58)
- Read
undefined(c233d391, !62) - Implemented
BsonContext.buildArray(#48, 37f0b868, !63) - Implemented
BsonFieldWriter.write(627ec56e, !63)
Documentation
- Added a mention to
$inand$nininFilterQuery(a1e04fe8, !57) - Fixed a broken sentence in
BsonDocumentReader(34ca574d, !57) - Added the Multiplatform BSON implementation to the API references (888b31ce, !57)
0.14.0 • Start of the Multiplatform driver, the great rename, $nin and $regex
Breaking changes
This version contains a major rename that affects almost everything in the DSL module. To learn more about the reasons we did it, see #35 and !54. Although future versions may still have breakages, this was the last planned major change.
- Renamed package
modelstocommand - Renamed package
exprtoquery - Moved contents of package
expr.commontotree - Moved contents of package
optionstocommand - Moved contents of package
options.commontocommand - Renamed
FilterOperatorstoFilterQuery, removedFilterExpression - Renamed
PredicateOperatorstoFilterQueryPredicate, removedPredicateExpression - Renamed
UpdateOperatorstoUpdateQuery, removedUpdateExpression - Renamed
UpsertOperatorstoUpsertQuery - Renamed
Expression(and its hierarchy) toBsonNode - Renamed
ValueDsltoAggregationOperators
BSON
- Added
Bson.toByteArray()andBsonArray.toByteArray()to access the raw binary BSON representation (!49) writeBinaryData's subtype parameter was changed fromBytetoUByteto better mirror the BSON spec (!49)- Added
BsonType.fromCode()to more easily access a BSON type from its binary representation (!50) - Added
Bson.read()andBsonArray.read()to access contents of BSON objects (!50) - Added
BsonContext.readDocument()andBsonContext.readArray()to convert from the binary BSON representation to driver objects (!50) - Documented that BSON-writeable objects much implement
toStringwith a JSON representation (!54)
BSON (Official)
- Removed the dependency on NPM
bsonsince it is currently unused (!49)
BSON (Multiplatform)
This new module is a pure Kotlin implementation of the BSON spec (#48, #49).
- Write booleans (!49) and read them (!50)
- Write int32 and int64 (!49) and read them (!50)
- Write strings (!49) and read them (!50)
- Write documents (!49) and read them (!50)
- Write doubles (!49) and read them (!50)
- Write arrays (!49) and read them (!50)
- Write binary data (!49)
- Write JS (!49)
- Write datetime (49)
- Write null (!49) and read them (!50)
DSL
- Added the filter operator
$nin(!52) - Added the filter operator
$regex(!56) - Added the convenience function
BsonNode.toBson()(!54)
Synchronous driver
- Moved
UpdatePipelineOperatorsinto the correct package (!54)
Deployment
- The project is now tested with MongoDB versions 6.0.21, 7.0.18 and 8.0.6 (!53)
0.13.0 • Arbitrary BSON writers and parsers
BSON
The :bson module's documentation on the Kotlin MongoDB driver has been removed.
There are multiple breaking changes related to this refactor. For example, buildBsonDocument and buildBsonArray are now members of BsonContext instead of being top-level functions.
- Everything but the interface definitions for arbitrary BSON writers and parsers has been removed from the
:bsonmodule - The BSON parser and writer based on the Kotlin MongoDB driver has been moved to the new module
:bson-official(67567b42) - BSON tests for parsers and writers have been moved to the new module
:bson-tests(5bef8c13) - Support most Kotlin platforms (9af59a3b)
Annotations
- Support most Kotlin platforms (9af59a3b)
DSL
- Utilities related to the official MongoDB driver have been moved to the
:driver-shared-officialinternal module (404cbb38)
Documentation
- Changed the Maven metadata from linking to the repository to linking to the documentation website (8ca2a2df)
0.12.1 • Documentation improvements
Documentation
Updated Dokka for MkDocs to version 0.5.0, bringing many improvements to the embedded API reference in the website.
0.12.0 • Array handling aggregation operators and more
users.aggregate()
.project {
include(User::name)
User::bestPassingGrades set User::grades
.filter { it gt of(50) }
.map { it / Grade::value }
.sortedDescending()
.take(3)
}
DSL
- Added the
$filteraggregation operator (59740316, !46) - Added the
$mapaggregation operator (5c903096, !46) - Added the
$firstNand$lastNaggregation operators (721b1b07, 721b1b07, !46) - Added the
$sortArrayaggregation operator (f736c402, a607fcce, !46) - Added the
$getFieldaggregation operator (28946504, !46) - Added the
$ceilaggregation operator (7481c6ab, !42) - Added the
$flooraggregation operator (d04f4b7f, !42) - Added the
$countaggregation stage (f14132bd, !45) - Fixed incorrect type parameters for
$degreesToRadiansand$radiansToDegrees(fb01397c, !43)
Documentation
- Renamed the DSL module from 'Query DSL' to 'Request DSL' (859f3737, !42)
- Added an example to
SortOptionDsl(91c044ac, !43)
Dependencies
- KotlinX.Coroutines 1.10.1
- KotlinX.Serialization 1.8.0
- MongoDB Kotlin driver 5.3.1
- BSON JS 6.10.3
0.11.0 • Aggregation stages $unset, $project, $sort and $unionWith, sorting in find(), $concat aggregation operator
DSL
- Add the $unset aggregation stage (4be311d4, !38)
- Add the $project aggregation stage (e27a6869, !38)
- Add the $sort aggregation stage (8040445f, !39)
- Add the $unionWith aggregation stage (d3773e41, !39)
- Add the $concat aggregation operator (892491e8, !37)
- Add sorting in find()'s options (c6b2acd8, !39)
- Allow using the '/' notation on nullable fields (d08211e1, !39)
- Improve toString of Mongo iterables (e8372cd1, !39)
- Fix documentation error in the $add aggregation operator (b6db3ff2, !37)
- Fix outdated Pipeline documentation (40c30ce3, !39)
- Documentation improvements around aggregation pipelines (bd23fefa, !41)
- Forbid nullable documents in models, as MongoDB doesn't allow them (5efad8f1, !39)
Kotlin BSON
0.10.0 • $add, $abs and trigonometry operators
DSL
- Add the
$addaggregation operator (#7, 4c8eedbe, !33) - Add the
$absaggregation operator (#7, 056da623, !35) - Add trigonometry aggregation operators
$cos,$cosh,$acos,$acosh,$sin,$sinh,$asin,$asinh,$tan,$tanh,$atan,$atanh(#7, !35) - Move the aggregation conversion functions (
of()) higher in theValueDslhierarchy (224c601a, !33) - Rename
ConditionalOperatorstoConditionalValueOperators(edf69970, !33) - Rename
SetOperatorstoSetStageOperators(bc343596, !33)
Documentation
- Add a 'news' section to the website with changelogs (!34)
- Add the BSON module in the API reference (!36)
0.9.0 • $cond and +=
DSL
- Add the aggregation operator $cond (!32)
- The update operator $inc can now be written += (!32)
- Add the update operators setIf & setUnless (!32)
- Add the aggregation operators setIf & setUnless (!32)
0.8.0 • Aggregation and update pipelines
DSL
- Rewrite the Pipeline hierarchy (!31)
Drivers
Documentation
- Split the article on field access into multiple pages (62571947, !30)
- Add a documentation page on optional filters (0c6ca41a, !30)
- Add a documentation page on filtered collections (bce1d0df, !30)