A truly Open Source MongoDB alternative

Overview

FerretDB

FerretDB (previously MangoDB) was founded to become the de-facto open-source substitute to MongoDB. FerretDB is an open-source proxy, converting the MongoDB wire protocol queries to SQL - using PostgreSQL as a database engine.

Why do we need FerretDB?

MongoDB was originally an eye-opening technology for many of us developers, empowering us to build applications faster than using relational databases. In its early days, its ease-to-use and well-documented drivers made MongoDB one of the simplest database solutions available. However, as time passed, MongoDB abandoned its open-source roots; changing the license to SSPL - making it unusable for many open source and early stage commercial projects.

Most MongoDB users are not in need of many advanced features offered by MongoDB; however, they are in need of an easy to use open-source database solution. Recognizing this, FerretDB is here to fill that gap.

Scope

FerretDB will be compatible with MongoDB drivers and will strive to serve as a drop-in replacement for MongoDB.

Current state

What you see here is a tech demo - intended to show a proof of concept. Over the next couple of months we will be adding more. See this example for a short demonstration.

FerretDB is in its very early stages and welcomes all contributors. See our CONTRIBUTING.md.

Quickstart

These steps describe a quick local setup. They are not suitable for most production use-cases because they keep all data inside containers.

  1. Store the following in the docker-compose.yml file:
version: "3"

services:
  postgres:
    image: postgres:14
    container_name: postgres
    ports:
      - 5432:5432
    environment:
      - POSTGRES_USER=user
      - POSTGRES_DB=ferretdb
      - POSTGRES_HOST_AUTH_METHOD=trust

  postgres_setup:
    image: postgres:14
    container_name: postgres_setup
    restart: on-failure
    entrypoint: ["sh", "-c", "psql -h postgres -U user -d ferretdb -c 'CREATE SCHEMA IF NOT EXISTS test'"]

  ferretdb:
    image: ghcr.io/ferretdb/ferretdb:latest
    container_name: ferretdb
    restart: on-failure
    ports:
      - 27017:27017
    command: ["--listen-addr=:27017", "--postgresql-url=postgres://[email protected]:5432/ferretdb"]
  • postgres container runs PostgreSQL 14 that would store data.
  • postgres_setup container creates a PostgreSQL schema test that would act like a FerretDB database of the same name.
  • ferretdb runs FerretDB.
  1. Start services with docker-compose up -d.

  2. If you have mongosh installed, just run it to connect to FerretDB database test. If not, run the following command to run mongosh inside the temporary MongoDB container, attaching to the same Docker network:

docker run --rm -it --network=ferretdb_default --entrypoint=mongosh mongo:5 mongodb://ferretdb/

Contact us

Visit us at www.ferretdb.io, get in touch, and sign up for updates on the project.

Comments
  • Implement `MsgDataSize` for Tigris

    Implement `MsgDataSize` for Tigris

    Description

    This PR closes #773.

    Readiness checklist

    • [x] I added tests for new functionality or bugfixes.
    • [x] I ran task all, and it passed.
    • [x] I added/updated comments for both exported and unexported top-level declarations (functions, types, etc).
    • [ ] I checked comments rendering with task godocs.
    • [ ] (for maintainers only) I set Reviewers (@FerretDB/core), Assignee, Labels, Project and project's Sprint fields.
    • [ ] I marked all done items in this checklist.
    code/feature code/tigris 
    opened by polldo 11
  • Support `ordered` argument for `delete` command

    Support `ordered` argument for `delete` command

    Description

    This PR closes #848.

    Readiness checklist

    • [x] I added tests for new functionality or bugfixes.
    • [x] I ran task all, and it passed.
    • [x] I added/updated comments for both exported and unexported top-level declarations (functions, types, etc).
    • [ ] I checked comments rendering with task godocs.
    • [x] (for maintainers only) I set Reviewers (@FerretDB/core), Assignee, Labels, Project and project's Sprint fields.
    • [x] I marked all done items in this checklist.
    code/feature 
    opened by noisersup 11
  • Support simple query pushdown

    Support simple query pushdown

    Description

    This is analysis PR for #2, we won't merge it. Select queries of the form {_id: <value>}. PR scope is {_id: <value>} where <value> is ObjectID.

    Tigris

    TODO: How will we ensure that Tigris compares values the same way as MongoDB?

    Not in scope

    Other cases when <value> of types are not in scope:

    • Strings
      • string comparison difference between MongoDB and PostgreSQL i.e.
      • case sensitive
      • zero values
      • collation
      • encoding checks
      • etc.
    • Binary data
      • len
      • sub-type
      • byte by byte
    • Numeric
    • Dates and Timestamps
      • ordering
    • Non-existent Fields (NaN, Inf)
    • Objects
    • Arrays
      • arrays are restricted to be in _id

    Links

    The pushdown term. MongoDB restrictions on _id. MongoDB Comparison/Sort Order.

    no ci 
    opened by seeforschauer 10
  • Implement ListDatabases command.

    Implement ListDatabases command.

    Had a quick shot at the issue mentioned in #61 - It's not complete but I thought I'd just put it up so you could have a look and point me in the right direction in terms of how I'm approaching it! Still learning a bit about pgx, postgres and mongo.

    Are there any examples so far I could look at to begin getting a feel for how to go abouts this? And also how about the testing.

    Sorry if it's a bit lame, thanks though!

    code/feature 
    opened by OpenSauce 9
  • Bump golang from 1.18.3 to 1.19rc2

    Bump golang from 1.18.3 to 1.19rc2

    Bumps golang from 1.18.3 to 1.19rc2.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    deps trust 
    opened by dependabot[bot] 8
  • Update `pull_request_template.md` to pass tests

    Update `pull_request_template.md` to pass tests

    Conform PR test fails when the last character of PR is not a dot or other punctuation mark, while the PR template contains the line break there.

    Checklist

    • [ ] Tests are added for new functionality or fixed bugs.
    • [x] task all passes.

    See CONTRIBUTING.md for more details.

    opened by noisersup 8
  • Support `multi` `update`'s argument

    Support `multi` `update`'s argument

    Closes #486

    This PR accepts the additional optional flag for multiple updates straight on the update command:

    https://www.mongodb.com/docs/manual/reference/method/db.collection.update/#std-label-update-multi

    ~~Since there is no high level API to call update (only UpdateOne or UpdateMany), I added a test that uses the lower level RunCommand API, providing the expected update command payload document.~~

    My strategy on this particular test was to add two documents with a same field (x: 1) and then update using ~~multi: false~~ UpdateOne first, and checking that only the first document was updated; and then update using ~~multi: true~~ UpdateMany making sure both documents were modified.

    Checklist

    • [x] Tests are added for new functionality or fixed bugs.
    • [x] task all passes.

    See CONTRIBUTING.md for more details.

    code/feature 
    opened by fcoury 7
  • feat: Add basic support for aggregation pipeline

    feat: Add basic support for aggregation pipeline

    I started testing with a real-world application here that uses MongoDB as the main database and the first thing that was not working was that most endpoints use countDocuments to generate pagination. Nowadays MongoDB drivers use an aggregation pipeline to query the count of collection, especially as you do a count with filters.

    With this PR, I added support for converting some basic aggregate pipeline queries to SQL.

    I also made some extra changes to support boolean parameters (7b10341068aa44b27f8e1fb68d0ca29df078b908) and one change to create table even before inserting a doc ( c16f707c94ed68bc93e2d9f253d31bf6013450c2 ) as I was having issues on our app here that run a unique check to see if the name is being used before inserting.

    Some example queries that I tested here:

    test> db.devices.find({})
    [
      {
        _id: ObjectId("61b51b3778adccdffe6c799d"),
        projectId: ObjectId("61b4fc61e1058918cb822a63"),
        createdAt: ISODate("2021-12-11T21:42:15.058Z"),
        updatedAt: ISODate("2021-12-11T21:42:15.058Z"),
        name: 'my-device'
      },
      {
        _id: ObjectId("61b64bbf78adccdffe6c799f"),
        name: 'my-second-device',
        projectId: ObjectId("61b4fc61e1058918cb822a63"),
        createdAt: ISODate("2021-12-12T19:21:35.974Z"),
        updatedAt: ISODate("2021-12-12T19:21:35.974Z")
      },
      {
        _id: ObjectId("61b65be378adccdffe6c79a1"),
        createdAt: ISODate("2021-12-12T20:30:27.767Z"),
        updatedAt: ISODate("2021-12-12T20:30:27.767Z"),
        name: 'my-third-device',
        projectId: ObjectId("61b4fc61e1058918cb822a63")
      }
    ]
    
    test> db.devices.aggregate([{ $group: { _id: "$projectId", n: { $sum: 1 } } }])
    [ { _id: ObjectId("61b4fc61e1058918cb822a63"), n: 5 } 
    
    test> db.devices.aggregate([{ $group: { _id: null, count: { $sum: 1 } } }])
    [ { count: 5 } ]
    
    test> db.devices.aggregate([{ $group: { _id: 1, count: { $sum: 1 } } }, { $match: { name: "my-device" }}])
    [ { count: 1 } ]
    
    test> db.devices.aggregate([{ $group: { _id: "$name", count: { $sum: 1 } } }, { $sort: { _id: 1 }}]) 
    [
      { _id: 'my-device', count: 1 },
      { _id: 'my-second-device', count: 1 },
      { _id: 'my-third-device', count: 1 }
    ]
    
    opened by alvarowolfx 7
  • Add support for updates with replacement objects

    Add support for updates with replacement objects

    Closes #697

    The MongoDB documentation states that when a update call is made with no operation on the update parameter, it is treated as a Replacement Object and the whole document is replaced by the contents of the update payload.

    More details here: https://www.mongodb.com/docs/manual/reference/method/db.collection.update/#std-label-update-parameter

    Checklist

    • [x] Tests are added for new functionality or fixed bugs.
    • [x] task all passes.

    See CONTRIBUTING.md for more details.

    code/feature 
    opened by fcoury 6
  • Add local search plugin

    Add local search plugin

    Refs #1110.

    Readiness checklist

    • [ ] I added tests for new functionality or bugfixes.
    • [ ] I ran task all, and it passed.
    • [ ] I added/updated comments for both exported and unexported top-level declarations (functions, types, etc).
    • [ ] I checked comments rendering with task godocs.
    • [x] I ensured that the title is good enough for the changelog.
    • [x] (for maintainers only) I set Reviewers (@FerretDB/core), Assignee, Labels, Project and project's Sprint fields.
    • [x] I marked all done items in this checklist.
    documentation 
    opened by AlekSi 2
  • Add support for Tigris auth parameters

    Add support for Tigris auth parameters

    Description

    Those parameters are needed for the cloud version of Tigris.

    Readiness checklist

    • [ ] I added tests for new functionality or bugfixes.
    • [x] I ran task all, and it passed.
    • [x] I added/updated comments for both exported and unexported top-level declarations (functions, types, etc).
    • [x] I checked comments rendering with task godocs.
    • [x] I ensured that the title is good enough for the changelog.
    • [x] (for maintainers only) I set Reviewers (@FerretDB/core), Assignee, Labels, Project and project's Sprint fields.
    • [x] I marked all done items in this checklist.
    code/enhancement 
    opened by AlekSi 2
  • Bump github.com/tigrisdata/tigris-client-go from 1.0.0-beta.1 to 1.0.0-beta.2

    Bump github.com/tigrisdata/tigris-client-go from 1.0.0-beta.1 to 1.0.0-beta.2

    Bumps github.com/tigrisdata/tigris-client-go from 1.0.0-beta.1 to 1.0.0-beta.2.

    Release notes

    Sourced from github.com/tigrisdata/tigris-client-go's releases.

    v1.0.0-beta.2

    1.0.0-beta.2 (2022-09-22)

    Bug Fixes

    Features

    • High level pub/sub APIs (91c39e1)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    deps 
    opened by dependabot[bot] 2
  • Configure repo settings with files

    Configure repo settings with files

    It is time-consuming to sync our settings, like labels, branch protection rules, etc., across repositories. There is also no good log for those changes.

    It would be better to manage settings using files in git. Two options for that are:

    • https://github.com/repository-settings/app
    • https://github.com/github/safe-settings

    Maybe there is something else. We should use an existing tool, not make our own.

    good first issue project 
    opened by AlekSi 0
  • Fuzz `wire` package with recorded data

    Fuzz `wire` package with recorded data

    Description

    This PR closes #1140.

    Readiness checklist

    • [ ] I added tests for new functionality or bugfixes.
    • [ ] I ran task all, and it passed.
    • [ ] I added/updated comments for both exported and unexported top-level declarations (functions, types, etc).
    • [ ] I checked comments rendering with task godocs.
    • [ ] I ensured that the title is good enough for the changelog.
    • [ ] (for maintainers only) I set Reviewers (@FerretDB/core), Assignee, Labels, Project and project's Sprint fields.
    • [ ] I marked all done items in this checklist.
    code/chore 
    opened by noisersup 3
  • Setup Tigris test cases with explicit schemas

    Setup Tigris test cases with explicit schemas

    Description

    Ref #906. As we support JSON Schema validators for Tigris, in tests let's create collections by defining them explicitly. This PR is preparation for #1005.

    Readiness checklist

    • [ ] I added tests for new functionality or bugfixes.
    • [x] I ran task all, and it passed.
    • [x] I added/updated comments for both exported and unexported top-level declarations (functions, types, etc).
    • [ ] I checked comments rendering with task godocs.
    • [x] I ensured that the title is good enough for the changelog.
    • [x] (for maintainers only) I set Reviewers (@FerretDB/core), Assignee, Labels, Project and project's Sprint fields.
    • [x] I marked all done items in this checklist.
    code/chore 
    opened by rumyantseva 2
Releases(v0.5.4)
  • v0.5.4(Sep 22, 2022)

    Fixed Bugs ๐Ÿ›

    • Add missing $k to the schema when creating collection in Tigris by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1136

    Documentation ๐Ÿ“„

    • Remove docusaurus references and update documentation by @Fashander in https://github.com/FerretDB/FerretDB/pull/1130
    • Deploy documentation PRs to Vercel by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1131

    Other Changes ๐Ÿค–

    • Add transaction to msg_drop by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1129
    • Add transaction to pg's msg_listcollections by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1135
    • Fix tests for Tigris by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1134
    • Use fixed -test-record directory in Task targets by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1139
    • Fix a typo in Readme by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1141
    • Use transaction in more pgdb functions by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1143
    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1158
    • Use transaction in more pgdb functions by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1144
    • Refactor msg_delete handlers by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1152
    • Improve contributing guidelines by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1146
    • Update process documentation by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1153
    • Update issues and PR templates by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1155
    • Fix typo by @si3nloong in https://github.com/FerretDB/FerretDB/pull/1165
    • Migrate fuzztool to Kong by @noisersup in https://github.com/FerretDB/FerretDB/pull/1159

    New Contributors

    • @si3nloong made their first contribution in https://github.com/FerretDB/FerretDB/pull/1165

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
    ferretdb.deb(16.34 MB)
    ferretdb.rpm(16.34 MB)
  • v0.5.3(Sep 8, 2022)

    New Features ๐ŸŽ‰

    • Add support for updates with replacement objects by @fcoury in https://github.com/FerretDB/FerretDB/pull/791
    • Add support for $update's $set and $setOnInsert operators dot notation by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1008
    • Support $pop array update operator by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1020
    • Add support for $update's $unset operators dot notation by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1028
    • tjson: Implement regex by @noisersup in https://github.com/FerretDB/FerretDB/pull/1050
    • Implement MsgDataSize for Tigris by @polldo in https://github.com/FerretDB/FerretDB/pull/1060
    • Support ordered argument for delete command by @noisersup in https://github.com/FerretDB/FerretDB/pull/1004
    • Implement simple query pushdown for Tigris by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1091
    • Implement MsgFindAndModify for Tigris by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1065
    • implement timestamp type for tigris by @noisersup in https://github.com/FerretDB/FerretDB/pull/1117

    Fixed Bugs ๐Ÿ›

    • Improve TestCommandsAdministrationServerStatus by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1062
    • Fix ModifiedCount for updates with an empty replacement document by @nicolascb in https://github.com/FerretDB/FerretDB/pull/1067
    • Fix $inc update operator int64-max issue by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1071
    • Handle findAndModify and update correctly when collection doesn't exist by @noisersup in https://github.com/FerretDB/FerretDB/pull/1087
    • Require limit parameter in delete command by @noisersup in https://github.com/FerretDB/FerretDB/pull/1066

    Enhancements ๐Ÿ› 

    • Fix update operation for Tigris handler by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1041
    • Collect sizes in MsgListDatabases for Tigris by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1043

    Documentation ๐Ÿ“„

    • Add GitHub Pages with documentation by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1100
    • Improve contribution guidelines and documentation website by @Fashander in https://github.com/FerretDB/FerretDB/pull/1114
    • Fix macOS spelling by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1127

    Other Changes ๐Ÿค–

    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1014
    • Fix Run linters job in Taskfile.yml by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1022
    • Improve and document integration tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1021
    • Add missing MaxTimeMS support for Tigris by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1026
    • Expose delete problem by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1030
    • Bump Tigris version to 1.0.0-alpha.27 by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1032
    • Bump postgres from 14.4 to 14.5 in /build/deps by @dependabot in https://github.com/FerretDB/FerretDB/pull/1033
    • tjson: Implement datetime by @noisersup in https://github.com/FerretDB/FerretDB/pull/1027
    • tjson: Add package documentation for types mapping by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1031
    • Rework database and collection creation for Tigris by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1038
    • Add a few more tests for logical query operators by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1049
    • Ensure that database and collection names are unique by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1046
    • Implement MsgDBStats for Tigris by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1047
    • Bump Tigris version to 1.0.0-alpha.29 by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1054
    • Add tests for update with replacement by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1044
    • Small pgdb cleanup by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1055
    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1059
    • Less strict delta for dataSize in tests by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1053
    • Add collMod command stub by @ravilushqa in https://github.com/FerretDB/FerretDB/pull/1037
    • Add a linter for Semantic Line Breaks in Markdown files by @GrandShow in https://github.com/FerretDB/FerretDB/pull/998
    • Fix data race in test by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1072
    • Use CODECOV_TOKEN if available by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1073
    • Bump dependencies by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1084
    • Add integration tests for logical operators by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1085
    • Implement MsgCollStats for Tigris by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1063
    • Implement MsgCreate for Tigris by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/1048
    • Use npm lock files for tools by @folex in https://github.com/FerretDB/FerretDB/pull/1093
    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1099
    • Simplify/sync delete a bit by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1104
    • Enable errorlint for new code by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1105
    • Add missing TODO by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1108
    • Migrate to MongoDB 6 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1074
    • Switch to Go 1.19, bump dependencies by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1123
    • Record incoming data for fuzzing by @noisersup in https://github.com/FerretDB/FerretDB/pull/1107
    • Add transaction to msg_drop_database by @w84thesun in https://github.com/FerretDB/FerretDB/pull/1126

    New Contributors

    • @polldo made their first contribution in https://github.com/FerretDB/FerretDB/pull/1060
    • @ravilushqa made their first contribution in https://github.com/FerretDB/FerretDB/pull/1037
    • @GrandShow made their first contribution in https://github.com/FerretDB/FerretDB/pull/998
    • @nicolascb made their first contribution in https://github.com/FerretDB/FerretDB/pull/1067
    • @folex made their first contribution in https://github.com/FerretDB/FerretDB/pull/1093
    • @Fashander made their first contribution in https://github.com/FerretDB/FerretDB/pull/1114

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
    ferretdb.deb(16.18 MB)
    ferretdb.rpm(16.19 MB)
  • v0.5.2(Aug 9, 2022)

    New Features ๐ŸŽ‰

    • Support comment and $comment update's arguments by @noisersup in https://github.com/FerretDB/FerretDB/pull/937
    • Support multi update's argument by @fcoury in https://github.com/FerretDB/FerretDB/pull/790
    • Support comment and $comment findAndModify's argument by @noisersup in https://github.com/FerretDB/FerretDB/pull/958
    • Support comment and $comment delete's arguments by @noisersup in https://github.com/FerretDB/FerretDB/pull/954
    • Support maxTimeMS argument for find and findAndModify methods by @DoodgeMatvey in https://github.com/FerretDB/FerretDB/pull/608
    • Add support for update's $inc operator dot notation by @w84thesun in https://github.com/FerretDB/FerretDB/pull/915

    Fixed Bugs ๐Ÿ›

    • Fix nModified count for update's $set operator with the same value by @w84thesun in https://github.com/FerretDB/FerretDB/pull/949

    Other Changes ๐Ÿค–

    • tjson: Fix schema comparison by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/944
    • Make compat error messages better by @AlekSi in https://github.com/FerretDB/FerretDB/pull/950
    • Enable wsl linter for new and changed code by @AlekSi in https://github.com/FerretDB/FerretDB/pull/856
    • Fix some collection names breaking listDatabases by @AlekSi in https://github.com/FerretDB/FerretDB/pull/953
    • Remove some tests to make next PRs smaller by @AlekSi in https://github.com/FerretDB/FerretDB/pull/959
    • Add SkipForTigris helper, use it by @AlekSi in https://github.com/FerretDB/FerretDB/pull/960
    • Add setup for compatibility tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/961
    • Add compatibility tests for $and by @AlekSi in https://github.com/FerretDB/FerretDB/pull/963
    • Bump igorshubovych/markdownlint-cli from v0.32.0 to v0.32.1 in /build/deps by @dependabot in https://github.com/FerretDB/FerretDB/pull/955
    • tjson: Check how we support binary by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/967
    • Move logic operators tests to compatibility tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/965
    • Add compatibility tests for $inc by @AlekSi in https://github.com/FerretDB/FerretDB/pull/964
    • Add test case for an empty update path by @AlekSi in https://github.com/FerretDB/FerretDB/pull/976
    • Bump golang from 1.18.4 to 1.18.5 by @dependabot in https://github.com/FerretDB/FerretDB/pull/977
    • Improve Document's Path API by @w84thesun in https://github.com/FerretDB/FerretDB/pull/973
    • tjson: Add unit tests for ObjectID by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/971
    • Make linter to enforce our preferred types order in type switch by @fenogentov in https://github.com/FerretDB/FerretDB/pull/654
    • Add back task env-data by @AlekSi in https://github.com/FerretDB/FerretDB/pull/983
    • Insert test data in random order by @AlekSi in https://github.com/FerretDB/FerretDB/pull/862
    • tjson: Improve ObjectID test by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/992
    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/995
    • Bump Tigris Docker image to alpha.26 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/997
    • Tigris: simplify ObjectID and filter usage by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/968
    • Add more scalar values to tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/984
    • Implement aggregate command stub by @AlekSi in https://github.com/FerretDB/FerretDB/pull/981
    • Reformat with Go 1.19 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1003
    • tjson: Cover document (object) type with tests by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/957
    • Add compatibility delete test for Tigris by @AlekSi in https://github.com/FerretDB/FerretDB/pull/1002

    New Contributors

    • @fcoury made their first contribution in https://github.com/FerretDB/FerretDB/pull/790

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
    ferretdb.deb(15.64 MB)
    ferretdb.rpm(15.64 MB)
  • v0.5.1(Jul 26, 2022)

    New Features ๐ŸŽ‰

    • Validate database names by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/913
    • Support $all array query operator by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/724
    • Support getLog diagnostic command by @fenogentov in https://github.com/FerretDB/FerretDB/pull/711
    • Implement MsgCount for Tigris by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/928
    • Support explain diagnostic command by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/909

    Fixed Bugs ๐Ÿ›

    • Fix edge cases in drop and dropDatabase handlers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/891
    • Fix ModifyCount for update operators by @w84thesun in https://github.com/FerretDB/FerretDB/pull/939

    Enhancements ๐Ÿ› 

    • Support gt lt operator comparison for Array type by @ribaraka in https://github.com/FerretDB/FerretDB/pull/819
    • Optimize documents fetching / filtering by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/808
    • Add test for a database name border case by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/921

    Documentation ๐Ÿ“„

    • Add a tip to limit concurrent tasks by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/883

    Other Changes ๐Ÿค–

    • Add a few testing helpers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/874
    • Add support for no ci label by @AlekSi in https://github.com/FerretDB/FerretDB/pull/876
    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/880
    • Bump golang from 1.18.3 to 1.18.4 by @dependabot in https://github.com/FerretDB/FerretDB/pull/881
    • Extract two more helpers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/875
    • Set pprof label for client connections by @AlekSi in https://github.com/FerretDB/FerretDB/pull/885
    • Cancel request's context when request processed by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/884
    • Simplify dbStats tests a bit, add TODOs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/886
    • Disable logs during test setup by @AlekSi in https://github.com/FerretDB/FerretDB/pull/888
    • Use InsertMany instead of InsertOne in tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/882
    • Restart development containers faster by @AlekSi in https://github.com/FerretDB/FerretDB/pull/889
    • Cover more logic in transactions by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/887
    • Disconnect client in embedded tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/890
    • Stop tests on the first data race by @AlekSi in https://github.com/FerretDB/FerretDB/pull/893
    • Wait for Tigris backend to be ready by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/894
    • Handle 42P07 PostgreSQL error to fix the tests by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/895
    • Build .rpm and .deb packages by @fenogentov in https://github.com/FerretDB/FerretDB/pull/739
    • Add setup for compatibility tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/901
    • Extract parameter list into one variable in QueryDocuments by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/910
    • Add first compatibility tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/863
    • Use v instead of value in tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/916
    • Tweak codecov settings by @AlekSi in https://github.com/FerretDB/FerretDB/pull/920
    • Remove deprecated functions from pgdb.Pool by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/922
    • Extract integration tests setup to own package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/923
    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/927
    • comment url.Values to prevent test failing by @noisersup in https://github.com/FerretDB/FerretDB/pull/930
    • Add a comment to the setup function about database and collection creation when provider list is empty by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/929
    • Bump golangci-lint, remove old hacks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/932
    • Fix tests for $all by @AlekSi in https://github.com/FerretDB/FerretDB/pull/934
    • Add Path tests by @w84thesun in https://github.com/FerretDB/FerretDB/pull/936
    • Build packages on CI by @AlekSi in https://github.com/FerretDB/FerretDB/pull/938
    • Tweak linter settings by @AlekSi in https://github.com/FerretDB/FerretDB/pull/942
    • Port and sync unit testing approach from fjson to tjson by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/935
    • Ensure that update operators are in sync by @AlekSi in https://github.com/FerretDB/FerretDB/pull/946

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
    ferretdb.deb(15.62 MB)
    ferretdb.rpm(15.63 MB)
  • v0.5.0(Jul 11, 2022)

    What's Changed

    This release enables the usage of FerretDB as a Go library. See this blog post.

    New Features ๐ŸŽ‰

    • Support embedded use-case by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/754
    • Validate collection names by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/844

    Fixed Bugs ๐Ÿ›

    • Fix embedded usage by @AlekSi in https://github.com/FerretDB/FerretDB/pull/798
    • Fix whatsmyuri command by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/796
    • Handle null value for nameOnly in listDatabases handler by @DoodgeMatvey in https://github.com/FerretDB/FerretDB/pull/738
    • pgdb: cover transactions with inTransaction function to simplify error handling by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/833

    Enhancements ๐Ÿ› 

    • Support all valid collection names by @w84thesun in https://github.com/FerretDB/FerretDB/pull/778
    • Remove MongoDB driver "dependency" by @AlekSi in https://github.com/FerretDB/FerretDB/pull/853

    Documentation ๐Ÿ“„

    • Update contributing docs and PR template according to our best practices by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/779
    • Update contributing documentation by @AlekSi in https://github.com/FerretDB/FerretDB/pull/843
    • Document that NUL (\0) strings is not supported by @w84thesun in https://github.com/FerretDB/FerretDB/pull/865

    Other Changes ๐Ÿค–

    • Tweak schedule of daily builds by @AlekSi in https://github.com/FerretDB/FerretDB/pull/794
    • Do not import pg handler explicitly by @AlekSi in https://github.com/FerretDB/FerretDB/pull/799
    • Add TODO item by @AlekSi in https://github.com/FerretDB/FerretDB/pull/804
    • Fix task env-pull target by @AlekSi in https://github.com/FerretDB/FerretDB/pull/810
    • Improve contributing documentation for Windows development by @w84thesun in https://github.com/FerretDB/FerretDB/pull/795
    • Fix Docker image build by @AlekSi in https://github.com/FerretDB/FerretDB/pull/805
    • Make it easier to trigger rebuilds by @AlekSi in https://github.com/FerretDB/FerretDB/pull/815
    • Use github.head_ref instead of github.ref by @AlekSi in https://github.com/FerretDB/FerretDB/pull/814
    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/817
    • Install QEMU for building Docker images by @AlekSi in https://github.com/FerretDB/FerretDB/pull/820
    • Use multi-stage docker build by @AlphaB in https://github.com/FerretDB/FerretDB/pull/605
    • Unify update tests by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/809
    • Add TODOs for all update operators by @AlekSi in https://github.com/FerretDB/FerretDB/pull/832
    • Add env-data Taskfile target by @AlekSi in https://github.com/FerretDB/FerretDB/pull/834
    • Tweak tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/837
    • Export integration tests helpers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/838
    • Remove old style of +build tags where possible by @AlekSi in https://github.com/FerretDB/FerretDB/pull/839
    • Export fields by @AlekSi in https://github.com/FerretDB/FerretDB/pull/840
    • Update Tigris version by @AlekSi in https://github.com/FerretDB/FerretDB/pull/841
    • Create Tigris databases by @AlekSi in https://github.com/FerretDB/FerretDB/pull/842
    • Add basic CI for Tigris by @AlekSi in https://github.com/FerretDB/FerretDB/pull/784
    • Test with the main version of Tigris too by @AlekSi in https://github.com/FerretDB/FerretDB/pull/846
    • Wait for Tigris to be fully up by @AlekSi in https://github.com/FerretDB/FerretDB/pull/854
    • Fill MongoDB on task env-data too by @AlekSi in https://github.com/FerretDB/FerretDB/pull/860
    • Add CI job for short tests without environment by @AlekSi in https://github.com/FerretDB/FerretDB/pull/855
    • Add TODOs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/852
    • Fix task run on Windows by @AlekSi in https://github.com/FerretDB/FerretDB/pull/867
    • Fix invalid variable names by @AlekSi in https://github.com/FerretDB/FerretDB/pull/868
    • Add ferretdb_ prefix to our custom build tags by @AlekSi in https://github.com/FerretDB/FerretDB/pull/869

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Jun 27, 2022)

    What's Changed

    This release adds preliminary support for the Tigris backend.

    New Features ๐ŸŽ‰

    • Support $setOnInsert field update operator by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/644
    • Support $unset field update operator by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/691
    • Support $currentDate field update operator by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/662
    • Support array querying by @w84thesun in https://github.com/FerretDB/FerretDB/pull/618
    • Support $elemMatch array query operator by @w84thesun in https://github.com/FerretDB/FerretDB/pull/707
    • Implement getFreeMonitoringStatus stub by @noisersup in https://github.com/FerretDB/FerretDB/pull/751
    • Implement setFreeMonitoring stub by @noisersup in https://github.com/FerretDB/FerretDB/pull/759
    • Implement tigris handler by @AlekSi in https://github.com/FerretDB/FerretDB/pull/690

    Fixed Bugs ๐Ÿ›

    • Handle both buildinfo and buildInfo commands by @AlekSi in https://github.com/FerretDB/FerretDB/pull/688
    • Fix a bug with proxy response logs by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/705
    • Handle find, count and delete correctly when collection doesn't exist by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/710
    • Fix default values for flags by @AlekSi in https://github.com/FerretDB/FerretDB/pull/743
    • Fix embedded array query bug by @ribaraka in https://github.com/FerretDB/FerretDB/pull/736

    Enhancements ๐Ÿ› 

    • Array comparison substitution by @ribaraka in https://github.com/FerretDB/FerretDB/pull/676
    • Build tigris handler only if tag is present by @AlekSi in https://github.com/FerretDB/FerretDB/pull/681
    • Support getParameter's showDetails, allParameters by @fenogentov in https://github.com/FerretDB/FerretDB/pull/606
    • Make log level configurable by @fenogentov in https://github.com/FerretDB/FerretDB/pull/687
    • $currentDate Timestamp fix DateTime seconds and milliseconds bug by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/701

    Documentation ๐Ÿ“„

    • Be explicit about MongoDB version by @AlekSi in https://github.com/FerretDB/FerretDB/pull/679
    • Fix pull request template by @AlekSi in https://github.com/FerretDB/FerretDB/pull/746

    Other Changes ๐Ÿค–

    • Use " instead of ' in all .yml files by @AlekSi in https://github.com/FerretDB/FerretDB/pull/675
    • Add empty Tigris handler by @AlekSi in https://github.com/FerretDB/FerretDB/pull/671
    • Do not test a global list of databases in parallel by @AlekSi in https://github.com/FerretDB/FerretDB/pull/678
    • Enable revive linter by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/672
    • More tests for dot notation support by @w84thesun in https://github.com/FerretDB/FerretDB/pull/660
    • Use circular buffer for zap logs by @fenogentov in https://github.com/FerretDB/FerretDB/pull/585
    • Fix build by @AlekSi in https://github.com/FerretDB/FerretDB/pull/703
    • Add tjson package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/682
    • Improve function comment by @AlekSi in https://github.com/FerretDB/FerretDB/pull/712
    • Use separate encodings for ObjectID and binary by @AlekSi in https://github.com/FerretDB/FerretDB/pull/713
    • Add the default Task target by @AlekSi in https://github.com/FerretDB/FerretDB/pull/716
    • Add workaround for Dependabot by @AlekSi in https://github.com/FerretDB/FerretDB/pull/717
    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/723
    • Always install Go and skip test cache by @AlekSi in https://github.com/FerretDB/FerretDB/pull/718
    • Bump mongo from 5.0.8 to 5.0.9 in /build/deps by @dependabot in https://github.com/FerretDB/FerretDB/pull/719
    • Better dummy handler errors by @AlekSi in https://github.com/FerretDB/FerretDB/pull/715
    • Add task run-proxy command by @AlekSi in https://github.com/FerretDB/FerretDB/pull/725
    • Add Min and Max methods to types.Array by @ribaraka in https://github.com/FerretDB/FerretDB/pull/726
    • Add arrays with NaN, double and nested empty array to tests' shared data by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/728
    • Bump github.com/go-task/task/v3 from 3.12.1 to 3.13.0 in /tools by @dependabot in https://github.com/FerretDB/FerretDB/pull/741
    • Disable "free monitoring" to simplify tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/748
    • Re-enable TestStatisticsCommands tests by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/704
    • Fix lint-golangci-lint task for Windows systems by @w84thesun in https://github.com/FerretDB/FerretDB/pull/752
    • Remove outdated comment by @AlekSi in https://github.com/FerretDB/FerretDB/pull/755
    • Skip -race flag on Windows by @w84thesun in https://github.com/FerretDB/FerretDB/pull/753
    • Fix fluky test by @AlekSi in https://github.com/FerretDB/FerretDB/pull/757
    • tjson improvements by @AlekSi in https://github.com/FerretDB/FerretDB/pull/760
    • Unify similar code in pg handler by @AlekSi in https://github.com/FerretDB/FerretDB/pull/762
    • Add Tigris environment by @AlekSi in https://github.com/FerretDB/FerretDB/pull/761
    • Bump postgres from 14.3 to 14.4 in /build/deps by @dependabot in https://github.com/FerretDB/FerretDB/pull/768
    • Use forked golangci-lint by @AlekSi in https://github.com/FerretDB/FerretDB/pull/758
    • Update conform-pr action by @AlekSi in https://github.com/FerretDB/FerretDB/pull/783
    • Drop test_db by @AlekSi in https://github.com/FerretDB/FerretDB/pull/788
    • Add task init-clean target by @AlekSi in https://github.com/FerretDB/FerretDB/pull/756
    • Add godoc to tools by @AlekSi in https://github.com/FerretDB/FerretDB/pull/789

    New Contributors

    • @noisersup made their first contribution in https://github.com/FerretDB/FerretDB/pull/751

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Jun 1, 2022)

    New Features ๐ŸŽ‰

    • Support findAndModify by @w84thesun in https://github.com/FerretDB/FerretDB/pull/548
    • Support $inc field update operator by @w84thesun in https://github.com/FerretDB/FerretDB/pull/596
    • Support $set field update operator by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/634

    Fixed Bugs ๐Ÿ›

    • Improve negative zero handling by @AlekSi in https://github.com/FerretDB/FerretDB/pull/613

    Enhancements ๐Ÿ› 

    • Added support for sorting scalar data types by @ribaraka in https://github.com/FerretDB/FerretDB/pull/607

    Other Changes ๐Ÿค–

    • Better -0 handling in tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/616
    • Bump github.com/golangci/golangci-lint from 1.46.1 to 1.46.2 in /tools by @dependabot in https://github.com/FerretDB/FerretDB/pull/617
    • Bump PostgreSQL and MongoDB versions by @AlekSi in https://github.com/FerretDB/FerretDB/pull/599
    • Rename OP_* constants to OpCode* constants by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/620
    • Bump gopkg.in/yaml.v3 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/646
    • Bump gopkg.in/yaml.v3 in tools by @AlekSi in https://github.com/FerretDB/FerretDB/pull/648
    • Make Path type by @w84thesun in https://github.com/FerretDB/FerretDB/pull/635
    • Fix incorrect test for $mod operator by @fenogentov in https://github.com/FerretDB/FerretDB/pull/645
    • Skip test on all ARM64 OSes by @AlekSi in https://github.com/FerretDB/FerretDB/pull/652
    • Add more visibility for the router/proxy error log levels by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/650
    • Update CODEOWNERS by @AlekSi in https://github.com/FerretDB/FerretDB/pull/655
    • Sync dummy and pg handlers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/641
    • Panic on unexpected order values by @AlekSi in https://github.com/FerretDB/FerretDB/pull/668
    • Add some comments to the functions and variables by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/619
    • Remove dead code by @AlekSi in https://github.com/FerretDB/FerretDB/pull/669

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
  • v0.2.1(May 17, 2022)

    What's Changed

    New Features ๐ŸŽ‰

    • Support $slice projection query operator by @GinGin3203 in https://github.com/FerretDB/FerretDB/pull/518
    • Support $comment query operator by @ribaraka in https://github.com/FerretDB/FerretDB/pull/563
    • Support basic connectionStatus diagnostic command by @fenogentov in https://github.com/FerretDB/FerretDB/pull/572
    • Support $regex evaluation query operator by @w84thesun in https://github.com/FerretDB/FerretDB/pull/588

    Enhancements ๐Ÿ› 

    • Support querying documents by @w84thesun in https://github.com/FerretDB/FerretDB/pull/573
    • Improve comparison of arrays and documents by @ribaraka in https://github.com/FerretDB/FerretDB/pull/589
    • Support getParameter's parameters by @fenogentov in https://github.com/FerretDB/FerretDB/pull/535
    • Add stubs to make VSCode plugin work by @AlekSi in https://github.com/FerretDB/FerretDB/pull/603

    Documentation ๐Ÿ“„

    • Add conform CI workflow, improve docs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/566
    • Update CONTRIBUTING.md with typo fix and a tiny correction by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/574
    • Add note about forks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/575

    Other Changes ๐Ÿค–

    • Bump go.mongodb.org/mongo-driver from 1.9.0 to 1.9.1 in /integration by @dependabot in https://github.com/FerretDB/FerretDB/pull/555
    • Add missing //nolint by @AlekSi in https://github.com/FerretDB/FerretDB/pull/556
    • Set the handler to use via a command-line flag and remove debug handlers from interface by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/534
    • Add tests for RemoveByPath by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/549
    • Add altMessage to AssertEqualError by @w84thesun in https://github.com/FerretDB/FerretDB/pull/550
    • Add documentation for values comparision by @AlekSi in https://github.com/FerretDB/FerretDB/pull/559
    • Add debug and panic msg handlers to Command map by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/561
    • Add RemoveByPath for Array and CompositeTypeInterface by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/560
    • Bump docker/login-action from 1 to 2 by @dependabot in https://github.com/FerretDB/FerretDB/pull/565
    • Bump pgx version by @AlekSi in https://github.com/FerretDB/FerretDB/pull/570
    • Use float64(x) for ok everywhere by @AlekSi in https://github.com/FerretDB/FerretDB/pull/577
    • Improve AssertEqualAltError documentation by @AlekSi in https://github.com/FerretDB/FerretDB/pull/578
    • Remove types.MustNewDocument in some places by @AlekSi in https://github.com/FerretDB/FerretDB/pull/579
    • Remove MustNewDocument by @AlekSi in https://github.com/FerretDB/FerretDB/pull/581
    • Remove MustNewArray by @AlekSi in https://github.com/FerretDB/FerretDB/pull/582
    • Remove MustConvertDocument by @AlekSi in https://github.com/FerretDB/FerretDB/pull/583
    • Enable staticcheck by @AlekSi in https://github.com/FerretDB/FerretDB/pull/580
    • Enable gosimple by @AlekSi in https://github.com/FerretDB/FerretDB/pull/584
    • Change the way linters work by @AlekSi in https://github.com/FerretDB/FerretDB/pull/586
    • Merge BigNumbersData into Scalars by @AlphaB in https://github.com/FerretDB/FerretDB/pull/595
    • Set GOLANGCI_LINT_CACHE by @AlekSi in https://github.com/FerretDB/FerretDB/pull/597
    • Increase golangci-lint timeout by @AlekSi in https://github.com/FerretDB/FerretDB/pull/598
    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/604

    New Contributors

    • @AlphaB made their first contribution in https://github.com/FerretDB/FerretDB/pull/595

    Full Changelog: https://github.com/FerretDB/FerretDB/compare/v0.2.0...v0.2.1

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(May 4, 2022)

    What's Changed

    This release implements all required functionality to support CLA Assistant. More details will be available shortly in our blog.

    New Features ๐ŸŽ‰

    • Add support for $nin operator by @ribaraka in https://github.com/FerretDB/FerretDB/pull/459
    • Support querying with dot notation for documents by @GinGin3203 in https://github.com/FerretDB/FerretDB/pull/483
    • Add support for $ne operator by @ribaraka in https://github.com/FerretDB/FerretDB/pull/464
    • Add basic findAndModify implementation by @AlekSi in https://github.com/FerretDB/FerretDB/pull/501
    • Add support for $in operator by @ribaraka in https://github.com/FerretDB/FerretDB/pull/499

    Fixed Bugs ๐Ÿ›

    • Fix large numbers comparision by @DoodgeMatvey in https://github.com/FerretDB/FerretDB/pull/466
    • Fix panic on receiving a filter query with unknown operator by @GinGin3203 in https://github.com/FerretDB/FerretDB/pull/517
    • Fix bitwise operators by @w84thesun in https://github.com/FerretDB/FerretDB/pull/488

    Enhancements ๐Ÿ› 

    • Return better errors for unimplemented operations by @AlekSi in https://github.com/FerretDB/FerretDB/pull/504
    • Implement nameOnly for listDatabases by @AlekSi in https://github.com/FerretDB/FerretDB/pull/524
    • Improve hostInfo command's os response by @DoodgeMatvey in https://github.com/FerretDB/FerretDB/pull/509

    Documentation ๐Ÿ“„

    • Mention force pushes by @AlekSi in https://github.com/FerretDB/FerretDB/pull/500
    • Update guidelines by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/496
    • Document task env-pull target by @AlekSi in https://github.com/FerretDB/FerretDB/pull/528

    Other Changes ๐Ÿค–

    • Stabilize tests by always sorting results by @AlekSi in https://github.com/FerretDB/FerretDB/pull/490
    • Skip one test for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/494
    • Bump MongoDB version by @AlekSi in https://github.com/FerretDB/FerretDB/pull/495
    • Use goimports to group imports on task fmt by @AlekSi in https://github.com/FerretDB/FerretDB/pull/498
    • Make default Docker arguments a bit more useful by @AlekSi in https://github.com/FerretDB/FerretDB/pull/502
    • Export helpers that will be used in other package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/505
    • Correctly override FUZZTIME on CI by @AlekSi in https://github.com/FerretDB/FerretDB/pull/506
    • Pass context to PostgreSQL pool by @AlekSi in https://github.com/FerretDB/FerretDB/pull/507
    • Bump dependencies by @AlekSi in https://github.com/FerretDB/FerretDB/pull/514
    • Remove Array.Subslice method by @AlekSi in https://github.com/FerretDB/FerretDB/pull/515
    • Remove types.CString by @AlekSi in https://github.com/FerretDB/FerretDB/pull/529
    • Make test helpers harder to misuse by @AlekSi in https://github.com/FerretDB/FerretDB/pull/530
    • Move existing comparision code to types by @AlekSi in https://github.com/FerretDB/FerretDB/pull/531
    • Extract common interface for handlers by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/521
    • Move all handler test to integration tests by @w84thesun in https://github.com/FerretDB/FerretDB/pull/523
    • Use nil errors instead of empty values by @fenogentov in https://github.com/FerretDB/FerretDB/pull/542
    • Delete old tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/543
    • Add tests for sort and find parameters type by @w84thesun in https://github.com/FerretDB/FerretDB/pull/544

    New Contributors

    • @DoodgeMatvey made their first contribution in https://github.com/FerretDB/FerretDB/pull/466

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Apr 19, 2022)

    New Features ๐ŸŽ‰

    • Support $gt comparision operator by @ribaraka in https://github.com/FerretDB/FerretDB/pull/330
    • Support $exists element query operator by @w84thesun in https://github.com/FerretDB/FerretDB/pull/446
    • Add basic upsert support by @AlekSi in https://github.com/FerretDB/FerretDB/pull/473
    • Add $type operator by @w84thesun in https://github.com/FerretDB/FerretDB/pull/453
    • Support $mod evaluation query operator by @fenogentov in https://github.com/FerretDB/FerretDB/pull/440
    • Support logical operators by @w84thesun in https://github.com/FerretDB/FerretDB/pull/465

    Enhancements ๐Ÿ› 

    • Ping database in some commands by @AlekSi in https://github.com/FerretDB/FerretDB/pull/435
    • Ensure that _id fields are always the first by @AlekSi in https://github.com/FerretDB/FerretDB/pull/476

    Documentation ๐Ÿ“„

    • Improve contributing guidelines by @AlekSi in https://github.com/FerretDB/FerretDB/pull/480

    Other Changes ๐Ÿค–

    • Integration tests improvements by @AlekSi in https://github.com/FerretDB/FerretDB/pull/441
    • Add test stub for bitwise operators by @AlekSi in https://github.com/FerretDB/FerretDB/pull/443
    • Add tests for collections create and drop by @AlekSi in https://github.com/FerretDB/FerretDB/pull/444
    • Add tests for more diagnostic commands by @AlekSi in https://github.com/FerretDB/FerretDB/pull/448
    • Transfer existing comparison tests by @ribaraka in https://github.com/FerretDB/FerretDB/pull/445
    • Move getParameter tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/450
    • Improve envtool diagnostics by @w84thesun in https://github.com/FerretDB/FerretDB/pull/426
    • Fix Postgres port check for envtool by @w84thesun in https://github.com/FerretDB/FerretDB/pull/451
    • Add support for $gte, $lt, $lte operators by @ribaraka in https://github.com/FerretDB/FerretDB/pull/452
    • Add tests for null values by @w84thesun in https://github.com/FerretDB/FerretDB/pull/458
    • Bump actions/upload-artifact from 2 to 3 by @dependabot in https://github.com/FerretDB/FerretDB/pull/460
    • Update tests for the latest mongo-driver by @AlekSi in https://github.com/FerretDB/FerretDB/pull/463
    • Rearrange tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/467
    • Do not invoke Dance tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/468
    • Minor unification of tests style by @AlekSi in https://github.com/FerretDB/FerretDB/pull/469
    • Add helpers that generate ObjectID by @AlekSi in https://github.com/FerretDB/FerretDB/pull/474
    • Add deep copy helpers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/475
    • Allow the usage of proxy/diff mode in tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/477
    • Bump codecov/codecov-action from 2 to 3 by @dependabot in https://github.com/FerretDB/FerretDB/pull/461
    • Composite data type find handling by @ribaraka in https://github.com/FerretDB/FerretDB/pull/471
    • Fix failing tests by @w84thesun in https://github.com/FerretDB/FerretDB/pull/482
    • Rename q to filter in tests by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/484
    • Supress linter warning by @AlekSi in https://github.com/FerretDB/FerretDB/pull/485

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Apr 4, 2022)

    What's Changed

    In this release, we made a big change in the way FerretDB fetches data from PostgreSQL.

    Previously, we generated a single SQL query that extensively used json/jsonb PostgreSQL functions for each incoming MongoDB request, then converted fetched data. All the filtering was performed by PostgreSQL. Unfortunately, the semantics of those functions do not match MongoDB behavior in edge cases like comparison or sorting of different types. That resulted in a difference in behavior between FerretDB and MongoDB, and that is a problem we wanted to fix.

    So starting from this release we fetch more data from PostgreSQL and perform filtering on the FerretDB side. This allows us to match MongoDB behavior in all cases. Of course, that also greatly reduces performance. We plan to address it in future releases by pushing down parts of filtering queries that can be made fully compatible with MongoDB. For example, a simple query like db.collection.find({_id: 'some-id-value'}) can be converted to SQL WHERE condition relatively easy and be compatible even with weird values like IEEE 754 NaNs, infinities, etc.

    In short, we want FerretDB to be compatible with MongoDB first and fast second, and we are still working towards the first goal.

    New Features ๐ŸŽ‰

    • Implement $bitsAllClear by @w84thesun in https://github.com/FerretDB/FerretDB/pull/394
    • Support $elemMatch projection query operator by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/383
    • Support all bitwise query operators by @w84thesun in https://github.com/FerretDB/FerretDB/pull/400
    • Support $eq comparision operator by @ribaraka in https://github.com/FerretDB/FerretDB/pull/309

    Fixed Bugs ๐Ÿ›

    • Fix a few issues found by fuzzing by @AlekSi in https://github.com/FerretDB/FerretDB/pull/345
    • More fixes for bugs found by fuzzing by @AlekSi in https://github.com/FerretDB/FerretDB/pull/346
    • Commands are case-sensitive by @AlekSi in https://github.com/FerretDB/FerretDB/pull/369
    • Make updates work by @AlekSi in https://github.com/FerretDB/FerretDB/pull/385
    • Handle any number type for limit by @AlekSi in https://github.com/FerretDB/FerretDB/pull/399
    • Fix numbers comparision by @ribaraka in https://github.com/FerretDB/FerretDB/pull/356
    • Fix finding zero documents with FindOne by @AlekSi in https://github.com/FerretDB/FerretDB/pull/409
    • Fix sort for arrays and documents by @AlekSi in https://github.com/FerretDB/FerretDB/pull/424
    • Fix pgdb helpers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/425

    Enhancements ๐Ÿ› 

    • Update insert command's help by @narqo in https://github.com/FerretDB/FerretDB/pull/321
    • Return correct error codes for projections by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/384
    • Add SortDocuments by @w84thesun in https://github.com/FerretDB/FerretDB/pull/378

    Documentation ๐Ÿ“„

    • Add Docker badge by @AlekSi in https://github.com/FerretDB/FerretDB/pull/305
    • Tweak Markdown linter a bit by @AlekSi in https://github.com/FerretDB/FerretDB/pull/393

    Other Changes ๐Ÿค–

    • Remove Docker volumes on make env-down by @AlekSi in https://github.com/FerretDB/FerretDB/pull/315
    • Update deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/320
    • Build static binaries by @AlekSi in https://github.com/FerretDB/FerretDB/pull/322
    • Integrate with dance PRs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/324
    • Bump Docker images by @AlekSi in https://github.com/FerretDB/FerretDB/pull/325
    • Bump github.com/golangci/golangci-lint from 1.44.0 to 1.44.2 in /tools by @dependabot in https://github.com/FerretDB/FerretDB/pull/327
    • Bump mvdan.cc/gofumpt from 0.2.1 to 0.3.0 in /tools by @dependabot in https://github.com/FerretDB/FerretDB/pull/329
    • Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/FerretDB/FerretDB/pull/333
    • Various small cleanups by @AlekSi in https://github.com/FerretDB/FerretDB/pull/334
    • Rewrite generate.sh in Go by @w84thesun in https://github.com/FerretDB/FerretDB/pull/338
    • Add helper for getting required parameters by @AlekSi in https://github.com/FerretDB/FerretDB/pull/339
    • Use safe type assertions for inputs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/341
    • Fix seed fuzz corpus collection by @AlekSi in https://github.com/FerretDB/FerretDB/pull/340
    • Add fuzzing tests for handlers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/328
    • Add bin/task to tools by @AlekSi in https://github.com/FerretDB/FerretDB/pull/349
    • Add more checks for Go versions by @AlekSi in https://github.com/FerretDB/FerretDB/pull/350
    • Improve Windows tooling by @w84thesun in https://github.com/FerretDB/FerretDB/pull/348
    • Add assertions for BSON values comparision by @AlekSi in https://github.com/FerretDB/FerretDB/pull/352
    • Replace Makefile with Taskfile by @w84thesun in https://github.com/FerretDB/FerretDB/pull/358
    • Fix Taskfile by @w84thesun in https://github.com/FerretDB/FerretDB/pull/365
    • Remove OS-specific Taskfiles, cleanup by @AlekSi in https://github.com/FerretDB/FerretDB/pull/366
    • Remove SQL storage by @w84thesun in https://github.com/FerretDB/FerretDB/pull/367
    • Use square brackets for nicer logs by @AlekSi in https://github.com/FerretDB/FerretDB/pull/373
    • Fix build tags by @AlekSi in https://github.com/FerretDB/FerretDB/pull/374
    • Add converter from types.Regex to regexp.Regexp by @AlekSi in https://github.com/FerretDB/FerretDB/pull/375
    • Log test failures for updates and deletes by @AlekSi in https://github.com/FerretDB/FerretDB/pull/376
    • Filter documents using Go code by @AlekSi in https://github.com/FerretDB/FerretDB/pull/370
    • Projection: <field>: <1 or true> and <field>: <0 or false> by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/377
    • Fix small issues after rewrite by @AlekSi in https://github.com/FerretDB/FerretDB/pull/380
    • Projection: <field>: <1 or true> and <field>: <0 or false>: error messages formatting by @seeforschauer in https://github.com/FerretDB/FerretDB/pull/382
    • Bump dependecnies by @AlekSi in https://github.com/FerretDB/FerretDB/pull/387
    • Fix some fluky tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/351
    • Minor CI and build tweaks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/390
    • Add Markdown linter by @fenogentov in https://github.com/FerretDB/FerretDB/pull/386
    • Do not cache modules by @AlekSi in https://github.com/FerretDB/FerretDB/pull/392
    • Fix more fluky tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/391
    • Fix the last fluky test by @AlekSi in https://github.com/FerretDB/FerretDB/pull/395
    • Allow access to actual listener's address by @AlekSi in https://github.com/FerretDB/FerretDB/pull/397
    • Add a new way to write integration tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/389
    • Move internal/pg to internal/handlers/pg/pgdb by @AlekSi in https://github.com/FerretDB/FerretDB/pull/401
    • Move handlers/jsonb1 to handlers/pg by @AlekSi in https://github.com/FerretDB/FerretDB/pull/402
    • Move handler to pg by @AlekSi in https://github.com/FerretDB/FerretDB/pull/403
    • Move tests back for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/404
    • Use testutil.AssertEqual helper by @AlekSi in https://github.com/FerretDB/FerretDB/pull/407
    • Move $size tests to integration tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/410
    • Improve logging in integration tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/412
    • Tweak hello/ismaster/isMaster responses by @AlekSi in https://github.com/FerretDB/FerretDB/pull/418
    • Fix named loggers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/427
    • Add tests for getLog by @AlekSi in https://github.com/FerretDB/FerretDB/pull/421
    • Bump deps by @AlekSi in https://github.com/FerretDB/FerretDB/pull/430

    New Contributors

    • @narqo made their first contribution in https://github.com/FerretDB/FerretDB/pull/321
    • @w84thesun made their first contribution in https://github.com/FerretDB/FerretDB/pull/338
    • @seeforschauer made their first contribution in https://github.com/FerretDB/FerretDB/pull/377
    • @fenogentov made their first contribution in https://github.com/FerretDB/FerretDB/pull/386
    • @ribaraka made their first contribution in https://github.com/FerretDB/FerretDB/pull/356

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.6(Feb 10, 2022)

    What's Changed

    New Features ๐ŸŽ‰

    • Support projections by @ekalinin in https://github.com/FerretDB/FerretDB/pull/212
    • Support dbStats by @ekalinin in https://github.com/FerretDB/FerretDB/pull/232
    • Support dataSize by @ekalinin in https://github.com/FerretDB/FerretDB/pull/246
    • Implement listCommands by @OpenSauce in https://github.com/FerretDB/FerretDB/pull/203
    • Support serverStatus by @ekalinin in https://github.com/FerretDB/FerretDB/pull/289
    • Add more metrics by @AlekSi in https://github.com/FerretDB/FerretDB/pull/298
    • Implement $size query operator by @taaraora in https://github.com/FerretDB/FerretDB/pull/296

    Fixed Bugs ๐Ÿ›

    • Forbid short document keys like $k by @AlekSi in https://github.com/FerretDB/FerretDB/pull/234
    • Fix benchmarks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/236
    • Move handler tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/239
    • Fix and enable fuzzing by @AlekSi in https://github.com/FerretDB/FerretDB/pull/240
    • Make db.collection.stats() & .dataSize() work from mongosh by @ekalinin in https://github.com/FerretDB/FerretDB/pull/243
    • fix: remove amd-v2 limit by @Junnplus in https://github.com/FerretDB/FerretDB/pull/282
    • Catch concurrent schema/table creation by @AlekSi in https://github.com/FerretDB/FerretDB/pull/283
    • Ignore some parameters by @AlekSi in https://github.com/FerretDB/FerretDB/pull/310

    Enhancements ๐Ÿ› 

    • Add buildEnvironment and debug to buildInfo command by @GinGin3203 in https://github.com/FerretDB/FerretDB/pull/218
    • Add helper for checking for unimplemented fields by @AlekSi in https://github.com/FerretDB/FerretDB/pull/267
    • Ignore authorizedXXX parameters for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/311

    Documentation ๐Ÿ“„

    • Update documentation about fjson package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/262
    • Update tutorial ,add depends_on in docker-compose by @muyouming in https://github.com/FerretDB/FerretDB/pull/275

    Other Changes ๐Ÿค–

    • Bump github.com/reviewdog/reviewdog from 0.13.0 to 0.13.1 in /tools by @dependabot in https://github.com/FerretDB/FerretDB/pull/222
    • Fix Docker workflow by @AlekSi in https://github.com/FerretDB/FerretDB/pull/225
    • Extract fjson package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/207
    • Fix test for collstats by @ekalinin in https://github.com/FerretDB/FerretDB/pull/233
    • Bump go.uber.org/zap from 1.19.1 to 1.20.0 by @dependabot in https://github.com/FerretDB/FerretDB/pull/241
    • Use generics for CompositeType by @AlekSi in https://github.com/FerretDB/FerretDB/pull/245
    • Enable go-consistent by @AlekSi in https://github.com/FerretDB/FerretDB/pull/248
    • Unexport fjson types by @AlekSi in https://github.com/FerretDB/FerretDB/pull/231
    • Remove JSON methods from bson package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/259
    • Fix make gen by @AlekSi in https://github.com/FerretDB/FerretDB/pull/264
    • Add fuzztool by @ferretdb-bot in https://github.com/FerretDB/FerretDB/pull/56
    • Use FerretDB/github-actions/linters by @AlekSi in https://github.com/FerretDB/FerretDB/pull/265
    • Make PRs from forks work by @AlekSi in https://github.com/FerretDB/FerretDB/pull/266
    • Use types.Null instead of nil by @AlekSi in https://github.com/FerretDB/FerretDB/pull/268
    • Add make fuzz-corpus target by @AlekSi in https://github.com/FerretDB/FerretDB/pull/279
    • Pass Documents by pointer by @AlekSi in https://github.com/FerretDB/FerretDB/pull/272
    • Unexport some bson types by @AlekSi in https://github.com/FerretDB/FerretDB/pull/280
    • Rename receivers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/284
    • Bump github.com/prometheus/client_golang from 1.11.0 to 1.12.0 by @dependabot in https://github.com/FerretDB/FerretDB/pull/285
    • Introduce generics for types by @AlekSi in https://github.com/FerretDB/FerretDB/pull/287
    • Fix some typos and style by @ekalinin in https://github.com/FerretDB/FerretDB/pull/286
    • Add Docker workflow stub by @AlekSi in https://github.com/FerretDB/FerretDB/pull/288
    • Split Docker Build and Push by @AlekSi in https://github.com/FerretDB/FerretDB/pull/290
    • Securely build and push Docker images by @AlekSi in https://github.com/FerretDB/FerretDB/pull/292
    • Update golangci-lint by @AlekSi in https://github.com/FerretDB/FerretDB/pull/294
    • Make fuzztool less verbose by @AlekSi in https://github.com/FerretDB/FerretDB/pull/295
    • Fix compilation with the latest go tip by @AlekSi in https://github.com/FerretDB/FerretDB/pull/300
    • Use values MongoDB database by @AlekSi in https://github.com/FerretDB/FerretDB/pull/299
    • Spend less time fuzzing pull requests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/302
    • Detect matching PR by @AlekSi in https://github.com/FerretDB/FerretDB/pull/303
    • Add detection action by @AlekSi in https://github.com/FerretDB/FerretDB/pull/304
    • Remove extra allocation by @peakle in https://github.com/FerretDB/FerretDB/pull/307
    • Micro fixes: type assert order, strings.Split -> strings.Cut by @peakle in https://github.com/FerretDB/FerretDB/pull/308
    • Bump github.com/prometheus/client_golang from 1.12.0 to 1.12.1 by @dependabot in https://github.com/FerretDB/FerretDB/pull/306

    New Contributors

    • @Junnplus made their first contribution in https://github.com/FerretDB/FerretDB/pull/282
    • @muyouming made their first contribution in https://github.com/FerretDB/FerretDB/pull/275
    • @peakle made their first contribution in https://github.com/FerretDB/FerretDB/pull/307
    • @taaraora made their first contribution in https://github.com/FerretDB/FerretDB/pull/296

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.5(Jan 4, 2022)

    What's Changed

    New Features ๐ŸŽ‰

    • Add basic metrics by @AlekSi in https://github.com/FerretDB/FerretDB/pull/108
    • Implement serverStatus command by @jyz0309 in https://github.com/FerretDB/FerretDB/pull/116
    • Implement dropDatabase command by @radmirnovii in https://github.com/FerretDB/FerretDB/pull/117
    • Support count function by @thuan1412 in https://github.com/FerretDB/FerretDB/pull/97
    • Implement getParameter command by @jyz0309 in https://github.com/FerretDB/FerretDB/pull/142
    • Support limit parameter in delete by @OpenSauce in https://github.com/FerretDB/FerretDB/pull/141
    • Implement basic create command by @ekalinin in https://github.com/FerretDB/FerretDB/pull/184
    • Build Docker image with GitHub Actions by @pboros in https://github.com/FerretDB/FerretDB/pull/189
    • Automatically create databases by @AlekSi in https://github.com/FerretDB/FerretDB/pull/185
    • Support hello command by @AlekSi in https://github.com/FerretDB/FerretDB/pull/195
    • Add stub for createindexes command by @AlekSi in https://github.com/FerretDB/FerretDB/pull/196
    • Support basic hostInfo command by @ekalinin in https://github.com/FerretDB/FerretDB/pull/188
    • Support collStats command by @ekalinin in https://github.com/FerretDB/FerretDB/pull/206

    Fixed Bugs ๐Ÿ›

    • Accept $ and . in object field names by @AlekSi in https://github.com/FerretDB/FerretDB/pull/127
    • Make checkConnection less strict for common UTF8 localizations by @klokar in https://github.com/FerretDB/FerretDB/pull/135
    • Wait for PostgreSQL on make env-up by @agneum in https://github.com/FerretDB/FerretDB/pull/149
    • Fix build info parsing by @AlekSi in https://github.com/FerretDB/FerretDB/pull/205
    • Fix GetLog & add missed test for it by @ekalinin in https://github.com/FerretDB/FerretDB/pull/211

    Enhancements ๐Ÿ› 

    • Return version in serverStatus command by @AlekSi in https://github.com/FerretDB/FerretDB/pull/121
    • Improve output of buildInfo command by @GinGin3203 in https://github.com/FerretDB/FerretDB/pull/204

    Documentation ๐Ÿ“„

    • CONTRIBUTING.md: fix typo & add clonning section by @ekalinin in https://github.com/FerretDB/FerretDB/pull/114
    • CONTRIBUTING.md: fix "/user/.../" -> "/usr/.../" by @GinGin3203 in https://github.com/FerretDB/FerretDB/pull/137
    • Add community links by @AlekSi in https://github.com/FerretDB/FerretDB/pull/180

    Other Changes ๐Ÿค–

    • Add convention for Decimal128 by @AlekSi in https://github.com/FerretDB/FerretDB/pull/103
    • Bump github.com/jackc/pgx/v4 from 4.14.0 to 4.14.1 by @dependabot in https://github.com/FerretDB/FerretDB/pull/99
    • Build multi-arch Docker images by @AlekSi in https://github.com/FerretDB/FerretDB/pull/107
    • Verify modules on make init by @AlekSi in https://github.com/FerretDB/FerretDB/pull/123
    • Enable go-consistent linter by @AlekSi in https://github.com/FerretDB/FerretDB/pull/124
    • Use composite GitHub Action for Go setup. (#122) by @klokar in https://github.com/FerretDB/FerretDB/pull/126
    • Use shared setup-go action by @AlekSi in https://github.com/FerretDB/FerretDB/pull/131
    • Add an option to use read-only user in tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/132
    • Refactor handler tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/136
    • Bump MongoDB and test_db versions by @AlekSi in https://github.com/FerretDB/FerretDB/pull/139
    • Remove old hack by @AlekSi in https://github.com/FerretDB/FerretDB/pull/144
    • Enable goheader linter by @AlekSi in https://github.com/FerretDB/FerretDB/pull/145
    • Cleanups and fixes by @AlekSi in https://github.com/FerretDB/FerretDB/pull/146
    • Use any instead of interface{} by @AlekSi in https://github.com/FerretDB/FerretDB/pull/147
    • Tweak storage by @AlekSi in https://github.com/FerretDB/FerretDB/pull/148
    • Add helpers for accessing objects by paths by @AlekSi in https://github.com/FerretDB/FerretDB/pull/140
    • Bump mvdan.cc/gofumpt from 0.2.0 to 0.2.1 in /tools by @dependabot in https://github.com/FerretDB/FerretDB/pull/186
    • Add and use schema and table helpers by @AlekSi in https://github.com/FerretDB/FerretDB/pull/191
    • Refactor / cleanup tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/192
    • Add missed test for buildInfo command by @ekalinin in https://github.com/FerretDB/FerretDB/pull/187
    • Refactor slice / types.Array type by @AlekSi in https://github.com/FerretDB/FerretDB/pull/202
    • Bump golang.org/x/text from 0.3.6 to 0.3.7 by @dependabot in https://github.com/FerretDB/FerretDB/pull/208
    • Setup changelog generation by @ekalinin in https://github.com/FerretDB/FerretDB/pull/209
    • Build containers for branches as well by @pboros in https://github.com/FerretDB/FerretDB/pull/213
    • Container builds for PRs and tags by @pboros in https://github.com/FerretDB/FerretDB/pull/215
    • Use our own action for extracting Docker tag by @AlekSi in https://github.com/FerretDB/FerretDB/pull/219

    New Contributors

    • @AlekSi made their first contribution in https://github.com/FerretDB/FerretDB/pull/103
    • @ekalinin made their first contribution in https://github.com/FerretDB/FerretDB/pull/114
    • @jyz0309 made their first contribution in https://github.com/FerretDB/FerretDB/pull/116
    • @radmirnovii made their first contribution in https://github.com/FerretDB/FerretDB/pull/117
    • @klokar made their first contribution in https://github.com/FerretDB/FerretDB/pull/126
    • @GinGin3203 made their first contribution in https://github.com/FerretDB/FerretDB/pull/137
    • @agneum made their first contribution in https://github.com/FerretDB/FerretDB/pull/149
    • @pboros made their first contribution in https://github.com/FerretDB/FerretDB/pull/189

    All closed issues and pull requests. All commits.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.4(Dec 1, 2021)

  • v0.0.3(Nov 19, 2021)

  • v0.0.2(Nov 13, 2021)

  • v0.0.1(Nov 2, 2021)

Use SQL to instantly query users, groups, applications and more from Okta. Open source CLI. No DB required.

Okta Plugin for Steampipe Use SQL to query infrastructure including users, groups, applications and more from Okta. Get started โ†’ Documentation: Table

Turbot 5 Sep 11, 2022
The open-source collaborative IDE for your databases.

The open-source collaborative IDE for your databases in your browser. About Slashbase is an open-source collaborative IDE for your databases in your b

Slashbase 325 Sep 4, 2022
Use SQL to instantly query instances, networks, databases, and more from Scaleway. Open source CLI. No DB required.

Scaleway Plugin for Steampipe Use SQL to query infrastructure servers, networks, databases and more from your Scaleway project. Get started โ†’ Document

Turbot 6 Jul 16, 2022
Use SQL to data from CSV files. Open source CLI. No DB required.

CSV Plugin for Steampipe Use SQL to query data from CSV files. Get started โ†’ Documentation: Table definitions & examples Community: Slack Channel Get

Turbot 7 Jul 31, 2022
Use SQL to instantly query Datadog resources across accounts. Open source CLI. No DB required.

steampipe-plugin-datadog Datadog Plugin for Steampipe Use SQL to query dashboards, users, roles and more from Datadog. Get started โ†’ Documentation: Ta

Turbot 7 Aug 26, 2022
Use SQL to instantly query Hypothesis resources. Open source CLI. No DB required.

Hypothesis Plugin for Steampipe Prerequisites Steampipe Golang Build $ git clone https://github.com/judell/steampipe-plugin-hypothesis.git $ cd steam

Turbot 2 Jan 14, 2022
Use SQL to instantly query resources, data sources and more from Terraform code. Open source CLI. No DB required.

Terraform Plugin for Steampipe Use SQL to query data from Terraform configuration files. Get started โ†’ Documentation: Table definitions & examples Com

Turbot 12 Sep 26, 2022
Use SQL to instantly query Algolia indexes and configuration. Open source CLI. No DB required

Use SQL to instantly query Algolia indexes and configuration. Open source CLI. No DB required

Turbot 1 Feb 12, 2022
A tool to run queries in defined frequency and expose the count as prometheus metrics. Supports MongoDB and SQL

query2metric A tool to run db queries in defined frequency and expose the count as prometheus metrics. Why ? Product metrics play an important role in

S Santhosh Nagaraj 19 Jul 1, 2022
The MongoDB driver for Go

The MongoDB driver for Go This fork has had a few improvements by ourselves as well as several PR's merged from the original mgo repo that are current

GlobalSign 2k Sep 26, 2022
Bifrost ---- ้ขๅ‘็”Ÿไบง็Žฏๅขƒ็š„ MySQL ๅŒๆญฅๅˆฐRedis,MongoDB,ClickHouse,MySQL็ญ‰ๆœๅŠก็š„ๅผ‚ๆž„ไธญ้—ดไปถ

Bifrost ---- ้ขๅ‘็”Ÿไบง็Žฏๅขƒ็š„ MySQL ๅŒๆญฅๅˆฐRedis,ClickHouse็ญ‰ๆœๅŠก็š„ๅผ‚ๆž„ไธญ้—ดไปถ English ๆผซๅจ้‡Œ็š„ๅฝฉ่™นๆกฅๅฏไปฅๅฐ† ้›ท็ฅž ้€ๅˆฐ ้˜ฟๆ–ฏๅŠ ๅพท ๅ’Œ ๅœฐ็ƒ ่€Œ่ฟ™ไธช Bifrost ๅฏไปฅๅฐ† ไฝ  MySQL ้‡Œ็š„ๆ•ฐๆฎ ๅ…จ้‡ , ๅฎžๆ—ถ็š„ๅŒๆญฅๅˆฐ : Redis MongoDB Cl

brokerCAP 1.3k Sep 21, 2022
WAL-G is an archival restoration tool for PostgreSQL, MySQL/MariaDB, and MS SQL Server (beta for MongoDB and Redis).

WAL-G is an archival restoration tool for PostgreSQL, MySQL/MariaDB, and MS SQL Server (beta for MongoDB and Redis).

null 2.3k Sep 28, 2022
Simple instagram backend api built using golang and mongodb

Insta_api using golang and mongodb Proper hashing algorithms have been implemented so that user password cannot be reverse engineered. Features: User

null 1 Apr 9, 2022
Zinc Search engine. A lightweight alternative to elasticsearch that requires minimal resources, written in Go.

Zinc Zinc is a search engine that does full text indexing. It is a lightweight alternative to elasticsearch and runs in less than 100 MB of RAM. It us

Prabhat Sharma 12.3k Sep 28, 2022
An easy to use web authorization system integrated with MongoDB.

goth An easy to use web authorization system for MongoDB. Written 100% in Golang! Contributing Feel free to add an issue, and if you have a fix, creat

DaCool1 1 Feb 22, 2022
Minimal memory usage, cloud native logstash alternative

Mr-Plow Tiny and minimal tool to export data from relational db (postgres or mysql) to elasticsearch. The tool does not implement all the logstash fea

RingLoop 29 Aug 18, 2022
SigNoz 4.7k Sep 24, 2021
Set out to become the de facto open-source alternative to MongoDB

MangoDB MangoDB is set out to become the de facto open-source alternative to MongoDB. MangoDB is an open-source proxy, which converts MongoDB wire pro

MangoDB 4.8k Sep 30, 2022
Blog-mongodb - this repository for educational purpose, learn how to use mongodb and use mongodb with go

ENDPOINT ENDPOINT METHOD ACCESS /register POST all /login POST all /articles GET all /articles POST all /articles/{articleId} GET all /articles/{artic

Muhammad Al Farizzi 0 Jan 4, 2022
A Lightweight VPN Built on top of Libp2p for Truly Distributed Networks.

Hyprspace A Lightweight VPN Built on top of Libp2p for Truly Distributed Networks. demo.mp4 Table of Contents A Bit of Backstory Use Cases A Digital N

Hyprspace 315 Sep 23, 2022