Skip to content

News

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

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

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

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)

0.7.0 • $expr and the first aggregation stages

Kotlin BSON

  • Fixed bug where arrays were generated incorrectly (#9d0cbea3, !20)

MongoDB DSL

  • Create the aggregation Value (#bec086c1)
  • Create the $expr filter operator (#22b9d97e)
  • Add the $match aggregation stage (#44ea7bf3)
  • Add the $sample aggregation stage (#fc34f2b5)
  • Add the $skip aggregation stage (#3239a479)
  • Add the $limit aggregation stage (#4cc84722)
  • Add the $set aggregation stage (#81b7f8b4)
  • Implement the $literal aggregation operator (#49e1d564)
  • Implement the $eq, $ne, $gt, $lt, $gte, $lte aggregation operators (#22b9d97e)