NoSQLBooster 9.0 Released!

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.

Main interface

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

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
2
3
4
5
6
7
8
9
10
11
db.collection.find({
"_id": {
"$oid": "6368556b5dfec6090e3e4b6a"
},
"int32": 63480,
"int64": 4127753986432186,
"double": 33.99535545410777,
"date": {
"$date": "2021-11-19T03:16:06.652Z"
}
})

EJSON Extended (canonical format)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
db.collection.find({
"_id": {
"$oid": "6368556b5dfec6090e3e4b6a"
},
"int32": {
"$numberInt": "63480"
},
"int64": {
"$numberLong": "4127753986432186"
},
"double": {
"$numberDouble": "33.99535545410777"
},
"date": {
"$date": {
"$numberLong": "1637291766652"
}
}
})

MongoDB Shell BSON Functions

1
2
3
4
5
6
7
db.collection.find({
oid: ObjectId("6368556b5dfec6090e3e4b6a"),
int32: 63480,
int64: NumberLong("4127753986432186"),
double: Double("33.99535545410777"),
date: ISODate("2021-11-19T11:16:06.652+08:00"),
})

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.

db.version in all nodes

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
2
3
4
5
6
7
8
9
10
11
12
13
[{
"member": "localhost:28000-PRI",
"result": "8.0.0-rc8"
},
{
"member": "localhost:28001",
"result": "8.0.0-rc8"
},
{
"member": "localhost:28002",
"result": "8.0.0-rc8"
}
]

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.

In-use encryption tab

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.

Encrypted 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.

Split editor Button

Two Columns Layout

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.

Rename Symbol

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.

Change all occurrences

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.

Field Right-click Menu

Field CRUD

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.

Document Right-click Menu

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.

Non-modal 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.

Tooltip for query result

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.

Tooltip for objectId

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.

Save to a new collection

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)...

Copy/paste to excel

Export data to the clipboard

It is now also possible to export the entire collection/query results to the clipboard.

Export to 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.

Backup Connections

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.

Import MongoDB URI List

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.

Connect in a new window

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.

Suggest Index

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.

Create Index by the query criteria

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.

Profiler Switcher

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.

Profiler Query Code

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.

Profiler explain plan

In-progress Operators - Preset filters

We've added some preset filters that let you find slow MongoDB queries more efficiently.

CurrentOp Filters

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')

Other Notable Improvements

Keyboard Shortcuts

You can customize keyboard shortcuts (or shortcut keys) by assigning them to a NoSQLBooster command. You can also remove keyboard shortcuts, assign or remove keyboard shortcuts by using a mouse or just the keyboard.

To customize keyboard shortcuts,
Menu -> Options -> Open Keymap...

Customize keyboard shortcuts

Alternatively, click the Customize button on the Command Panel to change the command shortcut.

Customize keyboard shortcuts

Generate random passwords for added users

When you use NoSQLBooster V9's UI to generate a creating-user script, a new random user password is added to that script, and as the new user is added, a MongoDB connection URI that connects to the database using that user is copied to the clipboard, which you can use to quickly test the database connection.

To create a MongoDB User, select "Users" node in the object explorer, pop up right-click menu, then click "Add User..."

Create a new user

Minor improvements

  • Upgrade MongoDB Node.js driver to 6.7.
  • Query Code Generator - upgrade drivers to the latest version for all supported languages.
  • Schema analyzer - the results of the execution of the aggregate() statement can be analyzed.

Thank you!

Please visit our feedback page or click the “Feedback” button in the app. Feel free to suggest improvements to our product or service. Users can discuss your suggestion and vote for and against it. We’ll look at it too.