https://github.com/FerretDB/FerretDB Skip to content Sign up * Why GitHub? + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # 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 {{ message }} FerretDB / FerretDB Public * Notifications * Star 3.5k * Fork 84 * A truly Open Source MongoDB alternative www.ferretdb.io Apache-2.0 License 3.5k stars 84 forks Star Notifications * Code * Issues 28 * Pull requests 2 * Discussions * Actions * Projects 0 * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show Loading {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default Loading View all tags 3 branches 4 tags Code Loading Latest commit @AlekSi AlekSi Refactor handler tests. ... b7e8240 Dec 8, 2021 Refactor handler tests. b7e8240 Git stats * 82 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github Use shared setup-go action. Dec 8, 2021 cmd Add an option to use read-only user in tests. Dec 8, 2021 internal Refactor handler tests. Dec 8, 2021 tools Add basic metrics. (#108) Dec 5, 2021 .codecov.yml Rename the project and the company. Dec 1, 2021 .gitignore Implement $nin query operator. Nov 12, 2021 .golangci-required.yml Rename the project and the company. Dec 1, 2021 .golangci.yml Rename the project and the company. Dec 1, 2021 CHANGELOG.md Release v0.0.4. Dec 1, 2021 CODE_OF_CONDUCT.md Rename the project and the company. Dec 1, 2021 CONTRIBUTING.md CONTRIBUTING.md: fix typo & add clonning section (#114) Dec 5, 2021 Dockerfile Build multi-arch Docker images. Dec 2, 2021 LICENSE Initial commit. Oct 31, 2021 Makefile Enable go-consistent linter. Dec 7, 2021 NOTICE Rename the project and the company. Dec 1, 2021 README.md Enable go-consistent linter. Dec 7, 2021 docker-compose.yml Rename the project and the company. Dec 1, 2021 go.mod Add basic metrics. (#108) Dec 5, 2021 go.sum Add basic metrics. (#108) Dec 5, 2021 View code FerretDB Why do we need FerretDB? Scope Current state Quickstart Contact us README.md 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://user@postgres: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. 2. Start services with docker-compose up -d. 3. 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. About A truly Open Source MongoDB alternative www.ferretdb.io Topics golang postgres mongo mongodb postgresql mongodb-database mongo-db Resources Readme License Apache-2.0 License Code of conduct Code of conduct Releases 4 v0.0.4 Latest Dec 1, 2021 + 3 releases Packages 2 Contributors 11 * @AlekSi * @OpenSauce * @thuan1412 * @dependabot[bot] * @ae-govau * @hugojosefson * @ekalinin * @klokar * @radmirnovii * @jyz0309 * @ptrfarkas Languages * Go 98.6% * Makefile 1.3% * Other 0.1% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. 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.