Skip to main content

FerretDB v.0.9.4 - Minor Release Update

· 3 min read
Alexander Fashakin

FerretDB v0.9.4

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