A truly Open Source MongoDB alternative
SCRAM-SHA-1
/SCRAM-SHA-256
authentication support by @henvic in https://github.com/FerretDB/FerretDB/pull/4078
update
/upsert
logic by @wazir-ahmed in https://github.com/FerretDB/FerretDB/pull/4069
bson2
package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4105
bson2
package for wire queries and replies by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4108
ferretdb
package by @fadyat in https://github.com/FerretDB/FerretDB/pull/4028
envtool run test
-run
and -skip
flags by @henvic in https://github.com/FerretDB/FerretDB/pull/4101
maxTimeMS
argument in count
, insert
, update
, delete
by @farit2000 in https://github.com/FerretDB/FerretDB/pull/4121
bson
with bson2
in wire
by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4110
OP_MSG
validity checks by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4135
saslContinue
crashing due to not found authentication conversation by @henvic in https://github.com/FerretDB/FerretDB/pull/4129
bson2
and wire
logging by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4148
fjson
by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4175
fjson
package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4176
speculativeAuthenticate
panic on empty database by @chilagrow in https://github.com/FerretDB/FerretDB/pull/4178
bson
package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4177
bson2
to bson
by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4179
pgx
by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4190
Production Docker images now use a non-root user with UID 1000 and GID 1000.
That change was made in v1.20.0, reverted in v1.20.1, and will be re-introduced in a future release.
TODO
comments for logging by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4015
bson2
helpers for conversions and logging by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4019
checkcomments
by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4030
envtool run test
progress with run and/or skip flags by @fadyat in https://github.com/FerretDB/FerretDB/pull/3999
database.Stats
for MySQL backend by @adetunjii in https://github.com/FerretDB/FerretDB/pull/4034
scratch
containers for production Docker images by @ahmethakanbesel in https://github.com/FerretDB/FerretDB/pull/4004
bson2.RawDocument
checking by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4076
maxTimeMS
for getMore
command by @noisersup in https://github.com/FerretDB/FerretDB/pull/3919
upsert
with $setOnInsert
operator by @wazir-ahmed in https://github.com/FerretDB/FerretDB/pull/3931
_id
index by @kropidlowsky in https://github.com/FerretDB/FerretDB/pull/3990
maxTimeMS
tests by @noisersup in https://github.com/FerretDB/FerretDB/pull/3940
PLAIN
passwords by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3970
updateUser
command by @henvic in https://github.com/FerretDB/FerretDB/pull/3973
bson2
encoding/decoding by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3987
usersInfo
for createUser
and dropUser
integration tests by @henvic in https://github.com/FerretDB/FerretDB/pull/3980
bson2
fuzzing by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3988
ListCollection
with a filter by @sachinpuranik in https://github.com/FerretDB/FerretDB/pull/3995
$readPreference
field by @b1ron in https://github.com/FerretDB/FerretDB/pull/3996
*types.Document
from wire
struct fields by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4000
bson2
decoding by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3997
wire
package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/4011
This release adds support for capped collections. They can be created as usual using create
command. Both max
(maximum number of documents) and size
(maximum collection size in bytes) parameters are supported.
This release adds support for tailable cursors. Both tailable
and awaitData
parameters are supported.
This release adds support for the basic OpLog functionality. The main supported use case is Meteor's OpLog tailing. Replication is not supported yet.
OpLog collection does not exist by default. To enable OpLog functionality, create a capped collection oplog.rs
in the local
database. Setting replica set name using --repl-set-name
flag / FERRETDB_REPL_SET_NAME
environment variable might also be needed.
awaitData
tailable cursors by @noisersup in https://github.com/FerretDB/FerretDB/pull/3900
createUser
command by @henvic in https://github.com/FerretDB/FerretDB/pull/3848
dropUser
command by @henvic in https://github.com/FerretDB/FerretDB/pull/3866
dropAllUsersFromDatabase
command by @henvic in https://github.com/FerretDB/FerretDB/pull/3867
usersInfo
command by @henvic in https://github.com/FerretDB/FerretDB/pull/3897
maxTimeMS
for non-awaitData cursors in getMore
command by @noisersup in https://github.com/FerretDB/FerretDB/pull/3917
ismaster
response by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/3925
aggregate
errors by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3892
dropAllUsersFromDatabase
in tests by @henvic in https://github.com/FerretDB/FerretDB/pull/3891
awaitData
tests by @noisersup in https://github.com/FerretDB/FerretDB/pull/3872
--skip
in envtool tests run
by @KrishnaSindhur in https://github.com/FerretDB/FerretDB/pull/3805
ConnInfo
in preparation for new auth by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3901
bson.E/D/M/A
, except integration tests by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3908
AssertEqual
helper handle duplicate keys by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3911
awaitData
tailable cursor by @noisersup in https://github.com/FerretDB/FerretDB/pull/3915
sparse
index parameter for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3934
ListDatabases
and ListCollections
by @sachinpuranik in https://github.com/FerretDB/FerretDB/pull/3851
awaitData
cursor panic by @noisersup in https://github.com/FerretDB/FerretDB/pull/3935
usersInfo
in dropAllUsersFromDatabase
tests by @henvic in https://github.com/FerretDB/FerretDB/pull/3932
$natural
by @noisersup in https://github.com/FerretDB/FerretDB/pull/3822
$natural
in compound sort by @noisersup in https://github.com/FerretDB/FerretDB/pull/3832
listDatabases
filtering when using nameOnly
by @henvic in https://github.com/FerretDB/FerretDB/pull/3788
validate
diagnostic command by @b1ron in https://github.com/FerretDB/FerretDB/pull/3804
listCollections.cursor
response by @henvic in https://github.com/FerretDB/FerretDB/pull/3809
envtool tests run
by @hungaikev in https://github.com/FerretDB/FerretDB/pull/3695
find
helper functions by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3826
$clusterTime
by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3830
upsert
tests by @wazir-ahmed in https://github.com/FerretDB/FerretDB/pull/3864
handlers.Interface
by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3753
DeleteAll
for capped collections by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/3718
sqlite/*.go
to internal/handler
by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/3755
common
to the handler by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3766
system.
prefix for collections for now by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3775
commonerrors
and commonparams
by @noisersup in https://github.com/FerretDB/FerretDB/pull/3779
getParameter
out of common
package by @noisersup in https://github.com/FerretDB/FerretDB/pull/3789
commoncommands
package by @noisersup in https://github.com/FerretDB/FerretDB/pull/3780
go-consistent
failures by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3794
find
, aggregate
, getMore
by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3800
GOARM
explicitly by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3796
Our release binaries and packages now include linux
as a part of their file names.
That's a preparation for providing artifacts for other OSes.
showRecordId
in find
by @chilagrow in https://github.com/FerretDB/FerretDB/pull/3637
--debug-addr
by @cosmastech in https://github.com/FerretDB/FerretDB/pull/3698
-
in addition to the empty string by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3704
*mongo.WriteError
type by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3705
As mentioned in the previous release changes, the old PostgreSQL backend code is completely removed. PostgreSQL remains our main backend, just with a new code base.
compact
command by @adetunjii in https://github.com/FerretDB/FerretDB/pull/3559
insert
performance by batching by @princejha95 in https://github.com/FerretDB/FerretDB/pull/3621
golangci-lint
by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3651
pgdb
from envtool
by @ShatilKhan in https://github.com/FerretDB/FerretDB/pull/3586
pg
handler by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3661
aggregate
$collStats
by @chilagrow in https://github.com/FerretDB/FerretDB/pull/3643
GOMAXPROCS
autotuning by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3105
envtool
output by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3664
create
for capped collections by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/3614
InsertAll
and FindAll
for capped collections by @chilagrow in https://github.com/FerretDB/FerretDB/pull/3610
The new PostgreSQL backend is now enabled by default. You can still enable the old backend with --postgresql-old
flag or FERRETDB_POSTGRESQL_OLD=true
environment variable, but it will be removed in the next release.
Our Docker images (but not binaries and .deb
/ .rpm
packages) now use /state
directory for the SQLite backend.
That directory is also a Docker volume, so data will be preserved after the container restart by default.
arm/v7
packagesWe now provide linux/arm/v7
binaries, Docker images, and .deb
/ .rpm
packages.
aggregate
for PostgreSQL by @noisersup in https://github.com/FerretDB/FerretDB/pull/3607
indexSizes
for collStats
by @chilagrow in https://github.com/FerretDB/FerretDB/pull/3575
collStats
, dbStats
and aggregate
$collStats
by @chilagrow in https://github.com/FerretDB/FerretDB/pull/3594
serverStatus
by @chilagrow in https://github.com/FerretDB/FerretDB/pull/3566
_id
field by @slavabobik in https://github.com/FerretDB/FerretDB/pull/3523
explain
panic for non-existent collection on PostgreSQL by @noisersup in https://github.com/FerretDB/FerretDB/pull/3541
/debug
page by @codenoid in https://github.com/FerretDB/FerretDB/pull/3592
_id: <string>
for SQLite by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3599
collStats
calculate collection size accurately for PostgreSQL
statistics by @chilagrow in https://github.com/FerretDB/FerretDB/pull/3513
Collection.Compact
for SQLite by @Akhil-2001 in https://github.com/FerretDB/FerretDB/pull/3536
arm/v7
binaries by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3577
$collStats
aggregation stage by @chilagrow in https://github.com/FerretDB/FerretDB/pull/3565
arm/v7
.deb
and .rpm
packages and binaries by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3576
_id
fields by @slavabobik in https://github.com/FerretDB/FerretDB/pull/3579
collStats
and dbStats
by @chilagrow in https://github.com/FerretDB/FerretDB/pull/3538
dataSize
and dbStats
integration tests by @chilagrow in https://github.com/FerretDB/FerretDB/pull/3585
Backend.ListDatabases
by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3588
slices
package by @AlekSi in https://github.com/FerretDB/FerretDB/pull/3590
Collection.Compact
for PostgreSQL by @rumyantseva in https://github.com/FerretDB/FerretDB/pull/3603
ANALYZE
less often by @Aditya1404Sal in https://github.com/FerretDB/FerretDB/pull/3563
listIndexes
return a sorted list by @codenoid in https://github.com/FerretDB/FerretDB/pull/3602