FerretDB v1.8.0 has just been released with new features, bug fixes, and improvements to the SQLite and PostgreSQL backends.
In the last few weeks we've added support for the $group
stage _id
expression and the $expr
evaluation query operator, and also made several optimizations and resolved issues with some of the previously implemented commands, our integration tests, among others.
These are quiet times for many people across the globe, including FerretDB maintainers and contributors, as we enjoy the summer vacations and the warm weather.
At FerretDB, we see this period as an exciting one! For instance, with the latest improvements and additions in FerretDB v1.8.0, we are getting closer to the production-ready release of the SQLite backend for FerretDB, which should be available soon. In addition to that, we'll be attending Postgres Ibiza 2023 (August 29-31, 2023) and Civo Navigate (September 5-6, 2023). Our CEO, Peter Farkas, will be giving a presentation at both events – we hope to see you there!
Without further ado, let's check out some of the notable features in this release!
New features
In the new release, we've added support for expressions in the $group
stage.
With this update, users can now use more complex document structures for the _id
field in $group
aggregations;
you can group data using an expression like {"$group": {_id: {"v": "$v"}}}
.
We've added support for the $expr
evaluation query operator.
It is now possible to use aggregation expressions within the query language.
For example, you can now run a query like db.values.find({$expr: {$sum: '$v'}})
to find all documents where the sum of values in the v
field is non-zero.
Bug fixes
We've fixed a bug that caused the findAndModify
command to return an immutable _id
error when upserting the same _id
.
Previously, one of our users experienced an error when executing an updateOne
operation that upserts the same _id
, for example, db.test.updateOne({ _id: 1 }, { $set: { _id: 1, a: 1 } })
.
With this bug fix, users can now execute such commands without encountering an error.
Other changes
In this release, we've improved on our SQLite backend by implementing metadata caching. Additionally, we've integrated transaction locks for collection creation and drops, ensuring database integrity during these critical operations. This comes as part of our commitment to enabling and improving the new backend architecture. In the coming weeks, we'll be adding more features to the SQLite backend, so stay tuned!
Of course there are other important changes in this release that we haven't mentioned here. You can check out the full list of changes in the release notes
We're delighted with all the support and contributions from everyone in the open source community, and we hope you're enjoying your summer! If you can, do catch us at Postgres Ibiza 2023 and Civo Navigate – we'd love to meet you!
If you have any questions for us, and you'd like to get in touch, please reach out to us on any of our community channels – we can't wait to hear from you!