https://github.com/FerretDB/FerretDB Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. {{ message }} FerretDB / FerretDB Public * Notifications * Fork 278 * Star 7.1k A truly Open Source MongoDB alternative www.ferretdb.io License Apache-2.0 license 7.1k stars 278 forks Star Notifications * Code * Issues 432 * Pull requests 36 * Discussions * Actions * Projects 2 * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights FerretDB/FerretDB This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 1 branch 40 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/F] Use Git or checkout with SVN using the web URL. [gh repo clone Ferret] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @AlekSi AlekSi Mention SQLite in README.md (#2968) ... 78cfe4e Jul 4, 2023 Mention SQLite in README.md (#2968) 78cfe4e Git stats * 1,452 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github Upload coverage results even for failed tests July 4, 2023 13:48 build Mention SQLite in README.md (#2968) July 4, 2023 20:32 cmd Convert SQLite directory to URI (#2922) July 3, 2023 10:49 ferretdb Convert SQLite directory to URI (#2922) July 3, 2023 10:49 integration Move find and aggregation cursor integration tests to getMore (#... July 4, 2023 00:30 internal Prepare v1.5.0 release July 3, 2023 12:26 tools Bump deps, add permissions monitoring (#2930) June 28, 2023 12:50 website Mention SQLite in README.md (#2968) July 4, 2023 20:32 .dockerignore Do not mark released binaries as dirty (#2371) April 5, 2023 11:35 .gitattributes Reformat documentation (#1792) January 13, 2023 22:12 .gitignore Run integration tests for sqlite handler (#2666) May 19, 2023 05:26 .golangci-new.yml Convert SQLite directory to URI (#2922) July 3, 2023 10:49 .golangci.yml Implement basic insert support for SAP HANA (#2732) June 21, 2023 17:20 CHANGELOG.md Prepare v1.5.0 release July 3, 2023 12:26 CODE_OF_CONDUCT.md Add formatter for markdown tables (#2693) May 30, 2023 14:15 CONTRIBUTING.md Tweak contributing guidelines (#2886) June 23, 2023 12:12 LICENSE Initial commit. October 31, 2021 23:18 NOTICE Rename the project and the company. December 1, 2021 21:16 README.md Mention SQLite in README.md (#2968) July 4, 2023 20:32 SECURITY.md Bump deps (#2592) May 9, 2023 15:08 Taskfile.yml Convert SQLite directory to URI (#2922) July 3, 2023 10:49 docker-compose.yml Use our own Prettier Docker image (#2535) May 4, 2023 14:58 go.mod Bump deps, add permissions monitoring (#2930) June 28, 2023 12:50 go.sum Bump deps, add permissions monitoring (#2930) June 28, 2023 12:50 View code [ ] FerretDB Why do we need FerretDB? Scope and current state Quickstart Building and packaging Managed FerretDB at cloud providers Documentation Community README.md FerretDB Go Reference Go codecov Security Packages Docs FerretDB was founded to become the de-facto open-source substitute to MongoDB. FerretDB is an open-source proxy, converting the MongoDB 6.0+ wire protocol queries to SQL - using PostgreSQL or SQLite 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 do not require any advanced features offered by MongoDB; however, they need an easy-to-use open-source document database solution. Recognizing this, FerretDB is here to fill that gap. Scope and current state FerretDB is compatible with MongoDB drivers and popular MongoDB tools. It functions as a drop-in replacement for MongoDB 6.0+ in many cases. Features are constantly being added to further increase compatibility and performance. We welcome all contributors. See our public roadmap, a list of known differences with MongoDB, and contributing guidelines. Quickstart Run this command to start FerretDB with PostgreSQL backend: docker run -d --rm --name ferretdb -p 27017:27017 ghcr.io/ferretdb/all-in-one Alternatively, run this command to start FerretDB with SQLite backend: docker run -d --rm --name ferretdb -p 27017:27017 \ -v ./data:/data/ -e FERRETDB_HANDLER=sqlite -e FERRETDB_SQLITE_URL=file:/data/ \ ghcr.io/ferretdb/all-in-one This command will start a container with FerretDB, PostgreSQL, and MongoDB Shell for quick testing and experiments. However, it is unsuitable for production use cases because it keeps all data inside and loses it on shutdown. See our Docker quickstart guide for instructions that don't have those problems. With that container running, you can: * Connect to it with any MongoDB client application using MongoDB URI mongodb://127.0.0.1:27017/. * Connect to it using MongoDB Shell by just running mongosh. If you don't have it installed locally, you can run docker exec -it ferretdb mongosh. * For PostgreSQL backend, connect to it by running docker exec -it ferretdb psql -U username ferretdb. FerretDB uses PostgreSQL schemas for MongoDB databases. So, if you created some collections in the test database using any MongoDB client, you can switch to it by running SET search_path = 'test'; query and see a list of PostgreSQL tables by running \d psql command. * For the SQLite backend, database files will be created on a host in the data directory. You can access them by running sqlite3 data/.sqlite after some data is inserted into FerretDB. You can stop the container with docker stop ferretdb. We also provide binaries and packages for various Linux distributions, as well as Go library package that embeds FerretDB into your application. See our documentation for more details. Building and packaging We strongly advise users not to build FerretDB themselves. Instead, use binaries, Docker images, or .deb/.rpm packages provided by us. If you want to package FerretDB for your operating system or distribution, the recommended way to build the binary is to use the build-release task; see our instructions for contributors for more details. FerretDB could also be built as any other Go program, but a few generated files and build tags could affect it. See there for more details. Managed FerretDB at cloud providers * Civo (see here). * Scaleway (request access here). Documentation * Documentation for users. * Documentation for Go developers about embeddable FerretDB. Community * Website and blog: https://ferretdb.io. * Twitter: @ferret_db. * Mastodon: @ferretdb@techhub.social. * Slack chat for quick questions. * GitHub Discussions for longer topics. * GitHub Issues for bugs and missing features. * Open Office Hours meeting every Monday at 18:00 UTC at Google Meet. If you want to contact FerretDB Inc., please use this form. About A truly Open Source MongoDB alternative www.ferretdb.io Topics go golang postgres mongo database mongodb postgresql document mongodb-database mongo-db ferretdb Resources Readme License Apache-2.0 license Code of conduct Code of conduct Security policy Security policy Stars 7.1k stars Watchers 73 watching Forks 278 forks Report repository Releases 36 v1.5.0 Latest Jul 3, 2023 + 35 releases Packages 3 Used by 10 * @sarvex * @sunby * @eyalatox * @mikeyhodl * @AlekSi * @themarcelor * @haunt98 * @tigrisdata-community + 2 Contributors 62 * @AlekSi * @rumyantseva * @w84thesun * @chilagrow * @noisersup * @Fashander * @seeforschauer * @dependabot[bot] * @ribaraka * @b1ron * @ekalinin + 51 contributors Languages * Go 99.2% * Other 0.8% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time.