Tags give the ability to mark specific points in history as being important
-
0.24.0
protectedRelease: 0.24.0 • Mokodee, unset shorthand and easier KMongo migration222935e0 · ·Mokodee, unset shorthand and easier KMongo migration ### DSL - Added the `unset` shorthand for updates (1b49046f, !135) ### Documentation - Added Mokodee, the KtMongo mascot! (c488893f, thanks to [Lilywhiteout](https://bsky.app/profile/lilywhiteout.bsky.social)) - Added a set up guide to the KMongo migration guide (e663d70f) - Reorganized and updated the Multiplatform roadmap (67f6816d, 716ce781) - Formatting improvements in the aggregation page (20d455fa, 35c79cf4) ### Dependencies - Prepared 2.1.1
-
0.23.0
protectedRelease: 0.23.0 • Multiplatform KotlinX.Serialization, Field.unsafe expansion, replace and KMongo utilities8d14523c · ·Multiplatform KotlinX.Serialization, Field.unsafe expansion, replace and KMongo utilities ### BSON (Multiplatform) - Multiplatform KotlinX.Serialization support (#50, !117, thanks @UnknownJoe796) ### DSL - Added `Field.unsafe()` overloads to allow more use-cases (!132) - `$concat` now allows nullability, and has been moved from `ArithmeticValueOperators` to `StringValueOperators` (!134) ### Drivers - Added `replaceOne()` and `repsertOne()` (!133) - Added `:driver-sync-kmongo` and `:driver-coroutines-kmongo` with a utility function to convert KMongo objects to KtMongo objects (!132) ### Documentation - Introduced the [Kotlin Multiplatform roadmap](https://ktmongo.opensavvy.dev/tutorials/multiplatform/index.html) (0861208a) - Added a [feature page on aggregations](https://ktmongo.opensavvy.dev/features/aggregations.html) (f4bec354) - Minor improvements on the home page
-
0.22.0
protectedRelease: 0.22.0 • WASI, averages and aggregation deserialization fixes39553520 · ·WASI, averages and aggregation deserialization fixes ### BSON - Added Wasm WASI support (!126) ### DSL - Added the `$avg` accumulator (679ebb2c, !127) - Added the `$avg` aggregator (ebdc71de, !127) ### Drivers - Fixed `AggregationPipeline.reinterpret` which attempted to deserialize the wrong type (#91, !129)
-
0.21.0
protectedRelease: 0.21.0 • $group and string aggregation operatorscd3385e9 · ·$group and string aggregation operators ### DSL - Projections are now represented with booleans instead of integers, for smaller request payloads (#81, !121) Aggregation stages: - Added `$group` (!120) Accumulation operators: - Added `$sum` (!120) Aggregation operators: - Added `$multiply`, `$divide` and `$subtract` (!122) - Added `$trim`, `$ltrim` and `$rtrim` (!123) - Added `$toLower` and `$toUpper` (!123) - Added `$substrCP`, `$substrBytes`, `$strLenCP` and `$strLenBytes` (!123) - Added `$split` (!123) - Added `$replaceOne` and `$replaceAll` (!123) ### Dependencies - KotlinX.Serialization 1.9.0 - KotlinX.Coroutines 1.10.2 - KotlinX.IO 0.8.0 - MongoDB Java driver 5.5.1
-
0.20.1
protectedRelease: 0.20.1 • Fixed documentation website deploymentb81ae847 · ·Fixed documentation website deployment
-
0.20.0
protectedRelease: 0.20.0 • $addToSet, $currentDate and the new documentation website6509d83c · ·$addToSet, $currentDate and the new documentation website ### BSON - Added support for reading and writing `ObjectId` (!110) ### DSL - Added support for the update operator `$addToSet` (!107) - Added support for the update operator `$currentDate` (!108) ### Documentation - Moved the website to https://ktmongo.opensavvy.dev (!112, !113)
-
0.19.0
protectedRelease: 0.19.0 • Pure Kotlin ObjectId and Timestamp, $switch, type aggregation operators, bitwise filter operators, writeConcern and readPreferencee79e780f · ·Pure Kotlin ObjectId and Timestamp, $switch, type aggregation operators, bitwise filter operators, writeConcern and readPreference ### BSON - Moved `ObjectId` to `opensavvy.ktmongo.bson.types` (6e455683, !80) - Added `ObjectIdGenerator` with multiple implementations (!80) - Added `ObjectId.MIN` and `ObjectId.MAX` (!80) - Added `BsonContext.newId` (!80) - Added `BsonReader.readInstant` and `BsonWriter.writeInstant` (244237ed, !88) - Added `opensavvy.ktmongo.bson.types.Timestamp` (!89) - Changed timestamp APIs from `Long` to the new `Timestamp` type (!89) ### BSON (official) - Deleted the old expect class opensavvy.ktmongo.bson.official.types.ObjectId (!80) - Added a codec for the new ObjectId (!80) ### BSON (multiplatform) - Decreased data copying when reading data (417128b5, !84) - Removed autoboxing in the implementation of the reader (17cab93a, !84) - Added no-copy piping of BSON from a reader to a writer (!86) - Added support for reading and writing `BsonType.DateTime` as `kotlin.time.Instant` (e15001f4, !88) - Added support for reading and writing `BsonType.RegExp` (2bb5e544, !88) - Added support for reading and writing `BsonType.Timestamp` (aa3c9a9e, !89) ### Official driver - `JvmMongoCollection.find` now returns a `JvmMongoIterable` instead of a `MongoIterable` (!85) ### DSL - Added the aggregation operator `$switch` (!90) - Added the aggregation operators `$type`, `$isArray`, `$isNumber`, `$toBoolean`, `$toDate`, `$toDouble`, `$toInt`, `$toLong`, `$toObjectId`, `$toString` and `$toUUID` (!91) - Added the filter operators `$bitAllClear`, `$bitsAllSet`, `$bitsAnyClear` and `$bitsAnySet` (!92) - Added the option `writeConcern` (!93) - Added the option `readPreference` (!94) - Created the `Command` interface and reorganized all commands to emit their BSON representation (!95) ### Documentation - Added a section on aggregation support to the KMongo migration page (#87, !103) ### Dependencies - Kotlin 2.2.0
-
0.18.0
protectedRelease: 0.18.0 • ObjectId, range operators, $min and $max, read concern and Java usage92644b69 · ·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 - Kotlin 2.1.21 (06afc477) - MongoDB Java driver 5.5.0 (07106e25) - KotlinX.Serialization 1.8.1 (399750c2)
-
0.17.0
protectedRelease: 0.17.0 • $mul and Field.unsafefbbb2273 · ·$mul and Field.unsafe ### DSL - Marked `Field`'s `Root` type parameter as contravariant (2424b984) - Added `Field.unsafe` to access field names using a stringly API (508d0ca9, !71) - Added the `$mul` update operator (!74)
-
0.16.0
protectedRelease: 0.16.0 • skip, maxTimeMS, MinKey, MaxKey887f1b5a · ·skip, maxTimeMS, MinKey, MaxKey ### DSL - Added the `skip` option (!65) - Added the `maxTimeMS` option (!65) ### BSON - Read and write the MinKey and MaxKey special values (#64, !67)
-
0.15.0
protectedRelease: 0.15.0 • `$regex` flexibility, simpler options, `Reader.toBson`ddebfcee · ·`$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) - 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 `$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
protectedRelease: 0.14.0 • Start of the Multiplatform driver, the great rename, $nin and $regex3010e0f6 · ·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
protectedRelease: 0.13.0 • Arbitrary BSON writers and parsers957e514e · ·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.1
protectedRelease: 0.12.1 • Embedded documentation improvements38154ad1 · ·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
protectedRelease: 0.12.0 • Array aggregation operators, and more234c9f0c · ·Array handling aggregation operators and more ```kotlin 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 `$filter` aggregation operator (59740316, !46) - Added the `$map` aggregation operator (5c903096, !46) - Added the `$firstN` and `$lastN` aggregation operators (721b1b07, 721b1b07, !46) - Added the `$sortArray` aggregation operator (f736c402, a607fcce, !46) - Added the `$getField` aggregation operator (28946504, !46) - Added the `$ceil` aggregation operator (7481c6ab, !42) - Added the `$floor` aggregation operator (d04f4b7f, !42) - Added the `$count` aggregation stage (f14132bd, !45) - Fixed incorrect type parameters for `$degreesToRadians` and `$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
protectedRelease: 0.11.0 • Aggregation stages $unset, $project, $sort and $unionWith, sorting in find(), $concat aggregation operatore93b18ea · ·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
protectedRelease: 0.10.0 • $add, $abs and trigonometry operatorsf53a4008 · ·$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.9.0
protectedRelease: 0.9.0 • $cond, setIf, setUnless and +=4c9ab331 · ·$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
protectedRelease: 0.8.0 • Aggregation and update pipelines78d2db50 · ·Aggregation and update pipelines ### DSL - Rewrite the Pipeline hierarchy (!31) ### Drivers - Add MongoCollection.aggregate (#38, !31) - Add MongoCollection.updateWithPipeline variants (#37, !31) ### 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)
-
0.7.0
protectedRelease: 0.7.0 • $expr and the first aggregation stages0edcdc25 · ·$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)