FerretDB v.0.9.4 - Minor Release Update
We've just released FerretDB v0.9.4, which includes essential updates, such as support for the $pull
array update operator and $each
modifier, among others.
Each FerretDB release takes us one step closer to the release of our GA, which we look forward to sharing with you soon (very soon!).
In recent weeks, we've seen a steady increase in the usage and popularity of FerretDB, especially with more real-life use cases. This encourages us in our mission to bring you the open-source document database with MongoDB compatibility built-in.
While this is a minor release with a few changes to the previous release, you still have much to look forward to, such as the new feature support, bug fixes, updated documentation, and many more. See here to learn more about FerretDB.
New Features
In this release, we've added support for dot notation in sorting, which will allow users to sort nested documents within a collection.
For instance, in a products
collection containing product listings with a price
field within a nested document details
, you can now use dot notation to sort by price
as follows:
db.products.find().sort({ 'details.price': 1 })
(1
) implies sorting in ascending order, while (-1
) implies sorting in descending order.
In addition to the dot notation support for sorting, you can now use the $each
modifier for the $addToSet
and $push
array update operators.
Suppose you have a document like this below:
db.users.insertOne({
name: 'Jane Doe',
skills: ['JavaScript', 'Python']
})
You can use the $each
modifier with the $addToSet
array update operators to add multiple unique elements to an array in one go.
db.users.updateOne(
{ name: 'Jane Doe' },
{ $addToSet: { skills: { $each: ['Java', 'C++'] } } }
)
For the $push
array update operator, you can use the $each
modifier to add several elements to the array, as shown below:
db.users.updateOne(
{ name: 'Jane Doe' },
{ $push: { skills: { $each: ['Java', 'C++'] } } }
)
Another addition to this release is the support for $pull
array update operator.
With this operator, you can remove array elements based on the query condition.
For example, to remove Java
from the previous users
collection above, run:
db.users.updateOne({ name: 'Jane Doe' }, { $pull: { skills: 'Java' } })
Fixed Bugs
With this release, we've also shown our continued efforts to deliver a document database that works with many other backend engines with fixes to SAP Hana and Tigris handlers not initializing correctly.
We've also fixed an issue with Long overflow detection when using the $mul
operator, which resulted in false negatives and overflow errors for values that did not actually overflow.
Documentation
Our document is also steadily improving with more details on our all-in-one Docker image, which you can find here. We also added sections explaining supported usages for field and array update operators.
We've also updated our security policy page, which should help significantly when reporting a vulnerability.
Please see our release notes for other changes and enhancements in this release.
Up Next
As we add more essential features to FerretDB before our GA release, we are excited to enable more compatibility with real-world applications.
The FerretDB team appreciates the community's feedback, code contributions, comments, and feature requests. We thank everyone who has contributed to FerretDB in one form or the other. If you have any feedback or questions, please feel free to contact us