Today, we are incredibly pleased to announce the release of NoSQLBooster 9.0. It brings many new features to improve the productivity of MongoDB'ers, CRUD Operations supports EJSON as parameters, send MongoDB commands to multiple replica nodes, in-use encryption connection, split an editor window, greatly improved table view and visual query builder, improved import and export functionality and more.
If you want to try NoSQLBooster 9.0 out now, you can get it from the following link.
NoSQLBooster 9.0 Download Link
The product will automatically enter the 30-day trial mode after a successful installation. At the end of the 30-day trial period, the product becomes a free edition. The free version is free for personal/commercial use but with limited functions.
The following figure shows the main interface of version 9.0.
Let's dive in and get an overview of what's coming in NoSQLBooster 9.0!
Although we are showing screenshots of NoSQLBooster for Windows, all these new features are available for Mac OS X and Linux as well.
What's new?
- MongoDB commands supports EJSON as parameters
- Send MongoDB commands to multiple replica nodes
- In-use encryption connection
- Script editor improvements
- Enhanced data view
- Data import and export
- MongoDB Connection
- Database indexing related
- Monitoring tools
- SQL query improvements
- Other Notable Improvements
- Minor improvements
MongoDB commands supports EJSON as parameters
The Extended JSON format defines a reserved set of keys prefixed with "$" to represent field type information that directly corresponds to each type in BSON, the format that MongoDB uses to store data. The MongoDB shell usually uses JavaScript functions to represent MongoDB BSON types. The mongosh's CRUD methods can only use javascript BSON functions as parameters, and do not support EJSON formats, which requires conversion in order to use EJSON in queries. In V9, we have extended the mongosh shell methods to directly support EJSON as method parameters. Both canonical and relaxed formats are supported.
The following three queries are equivalent and can be used directly in V9.
EJSON Relaxed Mode
1 | db.collection.find({ |
EJSON Extended (canonical format)
1 | db.collection.find({ |
MongoDB Shell BSON Functions
1 | db.collection.find({ |
We also added two editor commands for interchanging EJSON and mongo shell methods.
Press Command+Shift+P
to open command palette and enter "EJSON".
- Editor: Convert EJSON to mongosh Javascript Object
- Editor: Convert mongosh Javascript Object to EJSON
Send MongoDB commands to multiple replica nodes
The replica member switcher now allows you to select multiple/all replica set nodes and send Mongo Shell commands to those nodes at the same time. The following example allows you to quickly view version information for MongoDB instances on all nodes in a replica set.
The commands executed are as follows
1 | db.version() |
The result of the execution is aggregated into a JSON document, the member field indicates the node of the replica set, the primary node will add a PRI indication, if the node has a tag it will also be shown additionally,
The result field is the result of the execution of the command on the node.
1 | [{ |
As you can see, the replica set is a primary node and two secondary nodes, all of which have MongoDB version 8.0 rc.
In-use encryption connection
The new In-Use Encryption connection tab allows you to connect your deployments with Queryable Encryption. Since there are so many options that it would be tedious to set them up one by one using a graphical interface, NoSQLBooster uses javascript objects directly for configuration. Click here to view auto encryption options
Please noted, In-Use Encryption is an Enterprise/Atlas only
feature.
For this to work, you need to provide a key vault namespace and the Key Management Service(KMS) provider. Here is a simple example.
When you open a collection containing encrypted fields using the find/aggregate statement, the encrypted fields are automatically displayed. You can modify encrypted values and can insert documents and specified fields will be encrypted.
When in-use encryption is disabled, you cannot modify encrypted values. NoSQLBooster displays the values of these fields as a series of asterisks and inserted documents can not encrypt fields.
Script editor improvements
Split an editor window
An instance of the editor window can be split into two separate views for easy editing and comparative viewing of query results.
To split a editor, Click within the editor window to give it focus and click Two Columns Editor Layout
button.
Rename symbol
Renaming is a common operation associated with refactoring source code, and NoSQLBooster has added the Rename Symbol command (F2). Press F2
, type the desired new name, and press Enter. All instances of symbols in this tab will be renamed.
Change all occurrences
Let's say you've selected a word in your code and you want to find all its occurrences in the current file. You can do this by using the new Change All Occurrences
command Ctrl+F2
keyboard shortcut. This will highlight all instances of the selected word, allowing you to edit them simultaneously.
Text transformations
A new group of text transform commands has been added to the Editor Commands palette.
For text conversion,select the text you want to convert, press Command+Shift+P
to pop up the command palette, enter the conversion command (e.g. title case), then execute it.
- Transform to camel case
- Transform to kebab case
- Transform to snake case
- Transform to start case
- Transform to words
- Transform to title case
- Encode Base64
- Decode Base64
- Decode MongoDB URI
- Convert EJSON to mongosh Javascript Object
- Convert mongosh Javascript Object to EJSON
No duplicate tabs
Some users complained that there are too many tabs open in NoSQLBooster and it looks a bit messy. In V9, we have enhanced the double-click to open tabs logic appropriately. When you double-click on a collection of open tabs and the find script is unchanged
, do not open a new tab. Just focus on the existing tabs.
Enhanced data view
Field CRUD Operations
You can now perform "Add/Delete/Edit/Rename/Convert Type" field operations on individual documents, documents returned by a specific query, or all documents in a collection.
Moving to the Preview Code button displays the code that will be executed, and clicking on it allows you to customize the script.
Document CRUD Operations
You can perform "update/remove" documents operations on individual documents, selected documents, documents returned by a specific query, or all documents in a collection.
Non-modal Doc/Object Viewer
Document/Object viewer improved to non-modal window. The window being active does not prevent the rest of the application from continuing. When the selected objects in the tree/table view are changed, the object viewer will be updated synchronously.
Press Ctrl+I
or double-click _id field to open the document viewer.
Indicate query result size, avg size
Sometimes a query may be (or seem) fast, but have some deeply nested results or individual items containing a large number of embedded items. The V9 added a indicator to show the (average) size of the query/aggregate results. This way, developers can get a rough estimate of how much traffic the query will generate and take it into account, e.g. by adding a prediction, limiting the date, or other methods.
Tooltips for the ObjectId
Add more information to the tooltip for objectId. It is possible to display the _id as a timestamp via generation_time.
Data import and export
Save collection/query as a new collection
The results of the query can now be exported to another collection. If the target collection does not exist, the function invokes the $out stage to write to the collection. If the destination collection exists, $merge is used to incorporate results (insert new documents, merge documents, replace documents, keep existing documents, fail the operation, process documents with a custom update pipeline) into the existing collection.
To access this function, right-click the data grid in the "tree/table" view, pop up context menu and click Save This Query as a new MongoDB Collection
menu item.
Copy/Paste to Excel
The right-click menu of the data view has been greatly enhanced. In addition to saving the results to a new collection, the copy/paste function also adds more options, export to EJSON, export to Excel (csv/tsv)...
Export data to the clipboard
It is now also possible to export the entire collection/query results to the clipboard.
MongoDB Connection
Backup connections regularly
It is now possible to automatically back up the database connections on a regular basis, and you can configure the backup directory to be a cloud drive or a specified remote shared directory. This way, you can import and use the backed up database connections on another machine.
Import connections from URI list
In addition to importing the backup database connection JSON file. Importing/exporting Connection String URI list is now also supported. With this feature, you can import multiple MongoDB database connections at once. Each line of the file starting with mongodb://
represents a MongoDB connection, or you can add a comment at the beginning of the line to simply name the connection.
Open a connection in a new window
NoSQLBooster's object explorer supports multiple connections being displayed in the same object tree. And NoSQLBooster also supports multi-window mode, where you can assign a separate window to each connection.
And, the color field has also been added to the connection's data grid so you can filter connections by color.
Database indexing related
Suggest index
If the explain plan report query is run without an index, it will suggest that you create an index that covers the aggregation. The best indexes for your application must take a number of factors into account, including the kinds of queries you expect, the ratio of reads to writes, and the amount of free memory on your system. It is recommended to check the official documentation of MongoDB.
Create index from query
The version 9 provides a convenient feature to create a compound indexes directly based on the query criteria.
To access this function, right-click the data grid in the "tree/table" view, pop up context menu and click Create Index...
menu item.
Monitoring tools
Query Profiler - Query Code and Explain Plan
NoSQLBooster V9 enhances the original query analyzer. You can use the new visual explain plan to analyze slow queries, check for missing indexes, and use "query code" to view and re-execute MongoDB query code.
Profiler switcher
To switch off/on the profiler, click the Profiler switcher in the toolbar. When the profiler is closed, you can still view the profiling data that has been collected. If you don't need the data anymore, you can click the Turn off profiler and clean up profiled data
to erase the data with one click.
Query code
The "Query Code" viewer displays queries in the Mongo shell language, where you can debug and fix slow queries. Click "Query" button in the toolbar to pop up "Query Code" viewer.
You can debug the code in NoSQLBooster, by clicking "Send to new tab".
Explain code
To help you better understand the performance of your query, you can view your query's explain plan. On the "Explain Plan" dialog, you can view the explain stages as a visual tree, where each query operation appears as a node on the tree. You can also view the explain details in raw JSON format by clicking the "details" button. Explain plan is useful for checking if a query is using an index.
In-progress Operators - Preset filters
We've added some preset filters that let you find slow MongoDB queries more efficiently.
SQL query improvements
In this release, the free edition removes all restrictions on SQL queries and adds more SQL snippets.
The elemMatch function now supports like operation, and can also use the Regex function.
1 | SELECT * FROM TickerNews where results = elemMatch(title LIKE '%stock%', tickers='BYY') |
or
1 | SELECT * FROM TickerNews where results = elemMatch(title LIKE RegExp('stock','i'), tickers='BYY') |