Tags

Tags give the ability to mark specific points in history as being important
  • 0.17.0

    protected Release: 0.17.0 • $mul and Field.unsafe
    $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

    protected Release: 0.16.0 • skip, maxTimeMS, MinKey, MaxKey
    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

    protected Release: 0.15.0 • `$regex` flexibility, simpler options, `Reader.toBson`
    `$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

    protected Release: 0.14.0 • Start of the Multiplatform driver, the great rename, $nin and $regex
    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

    protected Release: 0.13.0 • Arbitrary BSON writers and parsers
    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

    protected Release: 0.12.1 • Embedded documentation improvements
    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

    protected Release: 0.12.0 • Array aggregation operators, and more
    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

    protected Release: 0.11.0 • Aggregation stages $unset, $project, $sort and $unionWith, sorting in find(), $concat aggregation operator
    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

    protected Release: 0.10.0 • $add, $abs and trigonometry operators
    $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

    protected Release: 0.9.0 • $cond, setIf, setUnless and +=
    $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

    protected Release: 0.8.0 • Aggregation and update pipelines
    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

    protected Release: 0.7.0 • $expr and the first aggregation stages
    $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)
    
  • 0.6.0

    protected Release: 0.6.0 • Map of strings and documentation improvements
    Map of strings and documentation improvements
    
    ### DSL
    
    - Add isMapEmpty & isMapNotEmpty (#33, 75c62ebb, !28)
    - Add the get() operator for Map<String, V> (#33, 70473b4d, !28)
    
    ### Documentation
    
    - Add link to the documentation website in the main README (!27)
    - Shorten the main README (!27)
    
  • 0.5.1

    protected Release: 0.5.1 • Embedded documentation
    Embedded documentation
    
    ### Documentation
    
    - The reference is now embedded directly into the documentation website (experimental, 8d613304, !25)
    
    ### Dependencies
    
    - Kotlin 2.1.0
    
  • 0.5.0

    protected Release: 0.5.0 • Collection.isEmpty, .$., .$[]., improved documentation website
    Collection.isEmpty, .$., .$[]., improved documentation website
    
    ### DSL
    
    - Added the filter operator Collection.isEmpty (#21, !21)
    - Added the filter operator Collection.isNotEmpty (#21, !21)
    - Added the positional operator: .$. (!22)
    - Added the all positional operator: .$[]. (!22)
    
    ### Website
    
    - Added a documentation page for CRUD operations (!22)
    - Added a documentation page for bulkWrite (!22)
    - Added a documentation page for nested fields access, including arrays (!22)
    
  • 0.4.0

    protected Release: 0.4.0 • Insert, delete, drop, and a configuration tutorial
    Insert, delete, drop, and a configuration tutorial
    
    ### Drivers
    
    - Add insertOne, insertMany (!16)
    - Add deleteOne, deleteMany (!14)
    - Add drop (!14)
    
    ### Query DSL
    
    - Add InsertOneOptions, DeleteOneOptions (!16)
    - Add DeleteOptions (!14)
    - Add DropOptions (!14)
    - Rename any to anyValue, and anyObject to any (#11, !16)
    - Add a documentation header for AbstractCompoundExpression (#12, !16)
    - Add a link to tracking issues in operators' documentation (#13, !16)
    
    ### Documentation
    
    - Initialize the website (!15)
    - Add a tutorial for setting up everything (!15)
    - Add a contribution guide for integration tests (!16)
    - Add pages introducing how to find and update data (!18)
    - Add an explanation of the benefits of KtMongo over KMongo (!18)
    - Add a comparison between KtMongo and KMongo (!18)
    - Simplify the design of the home page (!17)
    
  • 0.3.0

    protected Release: count(), update(), bulkWrite(), filter(), abstract tree management and options
    count(), update(), bulkWrite(), abstract tree management and options
    
    ### Drivers
    
    - Added count()
    - Added countEstimated()
    - Added updateOne(), updateMany(), upsertOne()
    - Added findOneAndUpdate()
    - Added filtered collections
    - Added an 'options' lambda to all operations
    - Added CountOptions.limit()
    - Improved MongoCollection.toString()
    - Added bulkWrite()
    
    ### DSL
    
    - The BsonContext is now available in all expressions
    - Abstract over tree management with the new '.tree' package
    - Reorganize all operations from XXXExpressions to XXXOperators interfaces (to allow delegation)
    - Add Expression.toBsonDocument
    
    ### BSON
    
    - Added buildBsonArray
    
    ### Deployment
    
    - Added an integration test to ensure the driver is compatible with 3 stable MongoDB versions
    
  • 0.2.0

    protected Release: 0.2.0 • find(), basic filter and update operators
    find(), basic filter and update operators
    
    ### Drivers
    
    - Create MongoCollection and MongoIterable (!8)
    - Implement find, findOne (!8)
    
    ### DSL
    
    - Create Expression (!2)
    - Create Path and Field to refer to MongoDB fields using Kotlin variables (!3)
    - Implement basic filter operators (!3)
      - $and, $or, $not
      - $eq, $ne, $in
      - $exists, $type
      - $gt, $gte, $lt, $lte
      - $elemMatch, $all
      - *notNull variants
    - Implement basic update operators (!7)
      - $set, $setOnInsert, $unset
      - $inc
      - $rename
    
    ### BSON
    
    - Mark all functions as @LowLevelApi (!2)
    
    ### Dependencies
    
    - Kotlin 2.0.20 (!5)
    
  • 0.1.0

    protected
    f38abcc5 · merge: Low-level BSON API ·
    Release: 0.1.0 • Initial version
    Initial prototype
    
    ### BSON
    
    - Typesafe BSON writer (!1)