Skip to content

News

0.18.0 • ObjectId, range operators, $min and $max, read concern and Java usage

BSON

  • Pure Kotlin ObjectId implementation (!72)
  • Added utilities for comparing ObjectId and Instant (!72)

DSL

  • Added the isIn operator to query on ranges (!75)
  • Added the $size filter operator (659dae51, !82)
  • Added the $nor filter operator (20378994, !82)
  • Added the $min and $max update operators (b298039f, !82)
  • Added the readConcern option (0b9520aa, !83)

Synchronous driver

  • Added a new experimental module, :driver-sync-java, with utilities for using KtMongo from Java (!69)
  • Java: Added JavaField.of(Customer::name) syntax (!69)
  • Java: Added KtMongo.from() helper (!69)
  • Java: Added options(s -> s.) syntax (!69)

Dependencies

0.15.0 • $regex flexibility, simpler options, Reader.toBson

DSL

  • Allow using $regex on a nullable String field (!59)
  • Rewrote the representation of options to make them simpler to evolve in the future (!61)

BSON

  • Added BsonDocumentReader.toBson and BsonArrayReader.toBson (9148b99c, !61)
  • Added BsonDocumentReader.asValue and BsonArrayReader.asValue (19348ff2, !63)
  • Added BsonValueWriter.pipe (#41, 48267c74, !63)
  • Renamed Bson.read to Bson.reader (f503f49e, !61)

BSON (Multiplatform)

Documentation

  • Added a mention to $in and $nin in FilterQuery (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 models to command
  • Renamed package expr to query
  • Moved contents of package expr.common to tree
  • Moved contents of package options to command
  • Moved contents of package options.common to command
  • Renamed FilterOperators to FilterQuery, removed FilterExpression
  • Renamed PredicateOperators to FilterQueryPredicate, removed PredicateExpression
  • Renamed UpdateOperators to UpdateQuery, removed UpdateExpression
  • Renamed UpsertOperators to UpsertQuery
  • Renamed Expression (and its hierarchy) to BsonNode
  • Renamed ValueDsl to AggregationOperators

BSON

  • Added Bson.toByteArray() and BsonArray.toByteArray() to access the raw binary BSON representation (!49)
  • writeBinaryData's subtype parameter was changed from Byte to UByte to better mirror the BSON spec (!49)
  • Added BsonType.fromCode() to more easily access a BSON type from its binary representation (!50)
  • Added Bson.read() and BsonArray.read() to access contents of BSON objects (!50)
  • Added BsonContext.readDocument() and BsonContext.readArray() to convert from the binary BSON representation to driver objects (!50)
  • Documented that BSON-writeable objects much implement toString with a JSON representation (!54)

BSON (Official)

  • Removed the dependency on NPM bson since 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 UpdatePipelineOperators into 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 :bson module
  • 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-official internal module (404cbb38)

Documentation

  • Changed the Maven metadata from linking to the repository to linking to the documentation website (8ca2a2df)

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

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

  • Various documentation improvements and clarifications (e17b899e, !41)

0.10.0 • $add, $abs and trigonometry operators

DSL

  • Add the $add aggregation operator (#7, 4c8eedbe, !33)
  • Add the $abs aggregation 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 the ValueDsl hierarchy (224c601a, !33)
  • Rename ConditionalOperators to ConditionalValueOperators (edf69970, !33)
  • Rename SetOperators to SetStageOperators (bc343596, !33)

Documentation

  • Add a 'news' section to the website with changelogs (!34)
  • Add the BSON module in the API reference (!36)