Set out to become the de facto open-source alternative to MongoDB

Related tags

Database MangoDB
Overview

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 protocol queries to SQL, and uses PostgreSQL as a database engine.

Why do we need MangoDB?

MongoDB is a life-changing technology for many developers, empowering them to build applications faster than using relational databases. Its easy to use and well documented drivers makes MongoDB one of the easiest to use database solutions avaliable. However, MongoDB abandoned its open source roots, changing the license to SSPL - making it unusable for many open source and commercial projects.

Most MongoDB users are not in need of many of the advanced features offered by MongoDB, however, they are in the need of an open-source database solution. Recognizing this, MangoDB is here to fill the gap by providing an alternative.

Scope

MangoDB will be compatible with MongoDB drivers and will work as a drop-in replacement for MongoDB in many cases.

Current state

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

MangoDB is in a very early stage and welcomes all contributors. See CONTRIBUTING.md.

Contact us

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

Issues
  • 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 codecov/codecov-action from 2 to 3

    Bump codecov/codecov-action from 2 to 3

    Bumps codecov/codecov-action from 2 to 3.

    Release notes

    Sourced from codecov/codecov-action's releases.

    v3.0.0

    Breaking Changes

    • #689 Bump to node16 and small fixes

    Features

    • #688 Incorporate gcov arguments for the Codecov uploader

    Dependencies

    • #548 build(deps-dev): bump jest-junit from 12.2.0 to 13.0.0
    • #603 [Snyk] Upgrade @​actions/core from 1.5.0 to 1.6.0
    • #628 build(deps): bump node-fetch from 2.6.1 to 3.1.1
    • #634 build(deps): bump node-fetch from 3.1.1 to 3.2.0
    • #636 build(deps): bump openpgp from 5.0.1 to 5.1.0
    • #652 build(deps-dev): bump @​vercel/ncc from 0.30.0 to 0.33.3
    • #653 build(deps-dev): bump @​types/node from 16.11.21 to 17.0.18
    • #659 build(deps-dev): bump @​types/jest from 27.4.0 to 27.4.1
    • #667 build(deps): bump actions/checkout from 2 to 3
    • #673 build(deps): bump node-fetch from 3.2.0 to 3.2.3
    • #683 build(deps): bump minimist from 1.2.5 to 1.2.6
    • #685 build(deps): bump @​actions/github from 5.0.0 to 5.0.1
    • #681 build(deps-dev): bump @​types/node from 17.0.18 to 17.0.23
    • #682 build(deps-dev): bump typescript from 4.5.5 to 4.6.3
    • #676 build(deps): bump @​actions/exec from 1.1.0 to 1.1.1
    • #675 build(deps): bump openpgp from 5.1.0 to 5.2.1

    v2.1.0

    2.1.0

    Features

    • #515 Allow specifying version of Codecov uploader

    Dependencies

    • #499 build(deps-dev): bump @​vercel/ncc from 0.29.0 to 0.30.0
    • #508 build(deps): bump openpgp from 5.0.0-5 to 5.0.0
    • #514 build(deps-dev): bump @​types/node from 16.6.0 to 16.9.0

    v2.0.3

    2.0.3

    Fixes

    • #464 Fix wrong link in the readme
    • #485 fix: Add override OS and linux default to platform

    Dependencies

    • #447 build(deps): bump openpgp from 5.0.0-4 to 5.0.0-5
    • #458 build(deps-dev): bump eslint from 7.31.0 to 7.32.0
    • #465 build(deps-dev): bump @​typescript-eslint/eslint-plugin from 4.28.4 to 4.29.1
    • #466 build(deps-dev): bump @​typescript-eslint/parser from 4.28.4 to 4.29.1
    • #468 build(deps-dev): bump @​types/jest from 26.0.24 to 27.0.0
    • #470 build(deps-dev): bump @​types/node from 16.4.0 to 16.6.0
    • #472 build(deps): bump path-parse from 1.0.6 to 1.0.7
    • #473 build(deps-dev): bump @​types/jest from 27.0.0 to 27.0.1

    ... (truncated)

    Changelog

    Sourced from codecov/codecov-action's changelog.

    3.0.0

    Breaking Changes

    • #689 Bump to node16 and small fixes

    Features

    • #688 Incorporate gcov arguments for the Codecov uploader

    Dependencies

    • #548 build(deps-dev): bump jest-junit from 12.2.0 to 13.0.0
    • #603 [Snyk] Upgrade @​actions/core from 1.5.0 to 1.6.0
    • #628 build(deps): bump node-fetch from 2.6.1 to 3.1.1
    • #634 build(deps): bump node-fetch from 3.1.1 to 3.2.0
    • #636 build(deps): bump openpgp from 5.0.1 to 5.1.0
    • #652 build(deps-dev): bump @​vercel/ncc from 0.30.0 to 0.33.3
    • #653 build(deps-dev): bump @​types/node from 16.11.21 to 17.0.18
    • #659 build(deps-dev): bump @​types/jest from 27.4.0 to 27.4.1
    • #667 build(deps): bump actions/checkout from 2 to 3
    • #673 build(deps): bump node-fetch from 3.2.0 to 3.2.3
    • #683 build(deps): bump minimist from 1.2.5 to 1.2.6
    • #685 build(deps): bump @​actions/github from 5.0.0 to 5.0.1
    • #681 build(deps-dev): bump @​types/node from 17.0.18 to 17.0.23
    • #682 build(deps-dev): bump typescript from 4.5.5 to 4.6.3
    • #676 build(deps): bump @​actions/exec from 1.1.0 to 1.1.1
    • #675 build(deps): bump openpgp from 5.1.0 to 5.2.1

    2.1.0

    Features

    • #515 Allow specifying version of Codecov uploader

    Dependencies

    • #499 build(deps-dev): bump @​vercel/ncc from 0.29.0 to 0.30.0
    • #508 build(deps): bump openpgp from 5.0.0-5 to 5.0.0
    • #514 build(deps-dev): bump @​types/node from 16.6.0 to 16.9.0

    2.0.3

    Fixes

    • #464 Fix wrong link in the readme
    • #485 fix: Add override OS and linux default to platform

    Dependencies

    • #447 build(deps): bump openpgp from 5.0.0-4 to 5.0.0-5
    • #458 build(deps-dev): bump eslint from 7.31.0 to 7.32.0
    • #465 build(deps-dev): bump @​typescript-eslint/eslint-plugin from 4.28.4 to 4.29.1
    • #466 build(deps-dev): bump @​typescript-eslint/parser from 4.28.4 to 4.29.1
    • #468 build(deps-dev): bump @​types/jest from 26.0.24 to 27.0.0
    • #470 build(deps-dev): bump @​types/node from 16.4.0 to 16.6.0
    • #472 build(deps): bump path-parse from 1.0.6 to 1.0.7
    • #473 build(deps-dev): bump @​types/jest from 27.0.0 to 27.0.1
    • #478 build(deps-dev): bump @​typescript-eslint/parser from 4.29.1 to 4.29.2
    • #479 build(deps-dev): bump @​typescript-eslint/eslint-plugin from 4.29.1 to 4.29.2

    ... (truncated)

    Commits
    • e3c5604 Merge pull request #689 from codecov/feat/gcov
    • 174efc5 Update package-lock.json
    • 6243a75 bump to 3.0.0
    • 0d6466f Bump to node16
    • d4729ee fetch.default
    • 351baf6 fix: bash
    • d8cf680 Merge pull request #675 from codecov/dependabot/npm_and_yarn/openpgp-5.2.1
    • b775e90 Merge pull request #676 from codecov/dependabot/npm_and_yarn/actions/exec-1.1.1
    • 2ebc2f0 Merge pull request #682 from codecov/dependabot/npm_and_yarn/typescript-4.6.3
    • 8e2ef2b Merge pull request #681 from codecov/dependabot/npm_and_yarn/types/node-17.0.23
    • Additional commits viewable in compare view

    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 will merge this PR once it's up-to-date and CI passes on it, as requested by @AlekSi.


    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] 6
  • Document code style for function calls

    Document code style for function calls

    In short:

    Good 1

    Short line, lll linter does not complain, all other similar lines are short too:

    return false, NewError(ErrRegexMissingParen, err) 
    

    Good 2

    That's just a standard Go.

    for {
      someCode()
      someOtherCode()
    }
    

    Good 3

    Long line, lll linter complains, or some similar lines are long.

    This style is the same as in "Good 2".

    err := NewError( // no arguments there
      ErrRegexMissingParen,
      fmt.Sprintf("let's imaging that error mesasge is very long"),
    ) // no arguments there
    

    Bad 1

    for { someCode()
      someOtherCode()
    }
    

    No-one does that.

    Bad 2

    err := NewError(ErrRegexMissingParen,
      fmt.Sprintf("let's imaging that error mesasge is very long"),
    )
    

    That is as bad as "Bad 1".

    Bad 3

    err := NewError(
      ErrRegexMissingParen,
      fmt.Sprintf("a very long error message"))
    

    The brackets should be symmetrical.

    project 
    opened by AlekSi 1
  • Handle `null` value for `nameOnly` in `listDatabases` handler

    Handle `null` value for `nameOnly` in `listDatabases` handler

    {
      "Checksum": 0,
      "FlagBits": 0,
      "Sections": [
        {
          "Document": {
            "$k": [
              "listDatabases",
              "nameOnly",
              "$db"
            ],
            "listDatabases": 1,
            "nameOnly": null,
            "$db": "admin"
          },
          "Kind": 0
        }
      ]
    }
    

    nameOnly is documented to be a boolean, but at least one real application sends null.

    We probably should extend GetBoolOptionalParam to handle nulls as false and use it in listDatabases handler.

    code/bug good first issue 
    opened by AlekSi 0
  • Log error responses with `error` log level

    Log error responses with `error` log level

    Currently, we log requests and responses with debug log level, and diffs with info level. We should make error responses more noticeable by logging them with the error log level.

    • [ ] log diffs with debug level, just like normal requests and responses;
    • [ ] log error responses with error level in route method;
    • [ ] move proxy's response logging into proxy.Router.Route method for consistency;
    • [ ] log proxy's error responses with error level too.
    code/enhancement good first issue 
    opened by AlekSi 0
Releases(v0.1.1)
  • 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.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)

Owner
MangoDB
A truly Open Source MongoDB alternative
MangoDB
CockroachDB - the open source, cloud-native distributed SQL database.

CockroachDB is a cloud-native SQL database for building global, scalable cloud services that survive disasters. What is CockroachDB? Docs Quickstart C

CockroachDB 24.5k May 12, 2022
TiDB is an open source distributed HTAP database compatible with the MySQL protocol

Slack Channel Twitter: @PingCAP Reddit Mailing list: lists.tidb.io For support, please contact PingCAP What is TiDB? TiDB ("Ti" stands for Titanium) i

PingCAP 31.3k May 18, 2022
An open-source graph database

Cayley is an open-source database for Linked Data. It is inspired by the graph database behind Google's Knowledge Graph (formerly Freebase). Documenta

Cayley 14.2k May 18, 2022
RadonDB is an open source, cloud-native MySQL database for building global, scalable cloud services

OverView RadonDB is an open source, Cloud-native MySQL database for unlimited scalability and performance. What is RadonDB? RadonDB is a cloud-native

RadonDB 1.6k May 17, 2022
LinDB is an open-source Time Series Database which provides high performance, high availability and horizontal scalability.

LinDB is an open-source Time Series Database which provides high performance, high availability and horizontal scalability. LinDB stores all monitoring data of ELEME Inc, there is 88TB incremental writes per day and 2.7PB total raw data.

LinDB 2.2k May 17, 2022
This is a mongodb data comparison tool.

mongo-compare This is a mongodb data comparison tool. In the mongodb official tools, mongodb officially provides a series of tools such as mongodump,

null 31 May 8, 2022
Walrus - Fast, Secure and Reliable System Backup, Set up in Minutes.

Walrus is a fast, secure and reliable backup system suitable for modern infrastructure. With walrus, you can backup services like MySQL, PostgreSQL, Redis, etcd or a complete directory with a short interval and low overhead. It supports AWS S3, digitalocean spaces and any S3-compatible object storage service.

Ahmed 436 Apr 26, 2022
SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. 🔥 🖥. 👉 Open source Application Performance Monitoring (APM) & Observability tool

Monitor your applications and troubleshoot problems in your deployed applications, an open-source alternative to DataDog, New Relic, etc. Documentatio

SigNoz 4.7k Sep 24, 2021
A truly Open Source MongoDB alternative

FerretDB FerretDB (previously MangoDB) was founded to become the de-facto open-source substitute to MongoDB. FerretDB is an open-source proxy, convert

FerretDB 4.4k May 18, 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
gout to become the Swiss Army Knife of the http client @^^@---> gout 是http client领域的瑞士军刀,小巧,强大,犀利。具体用法可看文档,如使用迷惑或者API用得不爽都可提issues

gout gout 是go写的http 客户端,为提高工作效率而开发 构架 feature 支持设置 GET/PUT/DELETE/PATH/HEAD/OPTIONS 支持设置请求 http header(可传 struct,map,array,slice 等类型) 支持设置 URL query(可

guonaihong 987 May 10, 2022
gathering distributed key-value datastores to become a cluster

go-ds-cluster gathering distributed key-value datastores to become a cluster About The Project This project is going to implement go-datastore in a fo

FileDrive Team 13 Feb 16, 2022
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

null 0 Oct 19, 2021
Find out where you fall on the Open-Source Character Alignment Chart

gitaligned Find out where you fall on the Open-Source Character Alignment Chart Binaries available in releases. If you prefer to install from source,

Patricio Whittingslow 76 Apr 29, 2022
In 'n Out - See what goes in and comes out of PEs/DLLs

In 'n Out Parse and return PE information ino -v comsvcs.dll { "Name": "<string>", "Path": "<string>", "Type": "<string file|directory>", "Im

Alex Flores 28 May 10, 2022
Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.

Focalboard Like what you see? ?? Give us a GitHub Star! ⭐ Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana. It helps

Mattermost 11k May 18, 2022
The open source public cloud platform. An AWS alternative for the next generation of developers.

M3O M3O is an open source public cloud platform. We are building an AWS alternative for the next generation of developers. Overview AWS was a first ge

Micro Services 2.1k May 8, 2022
An open source alternative to terraform enterprise.

oTF An open source alternative to terraform enterprise. Functionality is currently limited: Remote execution mode (plans and applies run remotely) Sta

Louis Garman 74 May 6, 2022
Go-mongodb - Practice Go with MongoDB because why not

Practice Mongo DB with Go Because why not. Dependencies gin-gonic go mongodb dri

Rizky Syawal 0 Jan 5, 2022
Produces a set of tags from given source. Source can be either an HTML page, Markdown document or a plain text. Supports English, Russian, Chinese, Hindi, Spanish, Arabic, Japanese, German, Hebrew, French and Korean languages.

Tagify Gets STDIN, file or HTTP address as an input and returns a list of most popular words ordered by popularity as an output. More info about what

ZoomIO 20 Mar 29, 2022
A simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set.

NutsDB English | 简体中文 NutsDB is a simple, fast, embeddable and persistent key/value store written in pure Go. It supports fully serializable transacti

徐佳军 2.2k May 16, 2022
Quick add or delete ASN/AS-SET to your AS-SET through RIPE RESTful API

RIPE AS-SET updater Quick add or delete ASN/AS-SET to your AS-SET through RIPE RESTful API. Requirenments You need to add "auth:" attribute in mntner

null 0 Apr 19, 2022
Inspect-descriptor-set - Example protobuf descriptor set inspector CLI tool

Quick little example of parsing a protobuf descriptor file. ❯ go run main.go -f

Daniel Selans 0 Jan 25, 2022
An application written in Go to generate fractals like the Mandelbrot set and the Julia set.

Fractals An application written in Go to generate fractals like the Mandelbrot set and the Julia set. Screenshots Mandelbrot set Julia set Prerequisit

null 0 May 9, 2022
Open-IM-Server is open source instant messaging Server.Backend in Go.

Open-IM-Server Open-IM-Server: Open source Instant Messaging Server Instant messaging server. Backend in pure Golang, wire transport protocol is JSON

OpenIM Corporation 7.8k May 9, 2022
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.

Connecting the Next Billion People Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core

Magma 1.3k May 11, 2022
Open-IM-Server is open source instant messaging Server.Backend in Go.

Open-IM-Server is open source instant messaging Server.Backend in Go.

OpenIM Corporation 7.8k May 12, 2022
go-opa-validate is an open-source lib that evaluates OPA (open policy agent) policy against JSON or YAML data.

go-opa-validate go-opa-validate is an open-source lib that evaluates OPA (open policy agent) policy against JSON or YAML data. Installation Usage Cont

chenk 5 Feb 5, 2022
mesh-kridik is an open-source security scanner that performs various security checks on a Kubernetes cluster with istio service mesh and is leveraged by OPA (Open Policy Agent) to enforce security rules.

mesh-kridik Enhance your Kubernetes service mesh security !! mesh-kridik is an open-source security scanner that performs various security checks on a

chenk 21 Feb 27, 2022