NoSQLBooster 7.0 Is Now Available! MongoDB Script Debugger

Today, we are extremely pleased to announce the release of NoSQLBooster 7.0. It brings a number of new features to increase MongoDB'ers productivity, MongoDB script debugger, official support for MongoDB 5.0, replica set members drop-down, collection re-schema tool, one-click grouping by date, task email notification, better fake data generator and more.

if you want to try NoSQLBooster 7.0 out now, you can get it from the following link.

NoSQLBooster 7.0 Download Link

The product will automatically enter the 30-day trial mode after successful installation. At the end of the 30-day trial period, the product becomes a free edition. The free edition is free for personal/commercial use but with limited functions.

The following figure shows the main interface of version 7.0 with a light theme.

Main interface in light

The following figure shows the main interface of version 7.0 with a dark theme.

Main interface in dark

Let’s dive in and get an overview of what’s coming in NoSQLBooster 7.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 script debugger (unique feature)

Still debugging your MongoDB script with print statements? Now, you can use NoSQLBooster's built-in debugging capabilities to set breakpoints and step through code.

To start debugging, click the editor's text margin to set a breakpoint F9, and run with debugger F5. When your breakpoint is hit, you can explore the call stack, watch and edit variables, and interact directly with the debugger.

Debugging with Breakpoints

Due to the introduction of the debugger, some keyboard shortcuts have been adjusted, and you can view the bound shortcuts through the button's tooltip.

  • Press F5 to start debugging, CTRL+Enter|CTRL+F5 to run without debugging.
  • Press F6 to Run Selected Text/Current Statement.
  • Unlike previous versions, click the "Run" button or press CTRL+ENTER to always run the entire script even if you select some of the scripts.

Replica set members drop-down list

In many panels, we have added a replica set members selector that allows you to switch between the members of the replica set in the interface. This is especially convenient for monitoring tools, and many times you want to drill down to a rs member to see the details.

Replica set members drop-down list

Collection re-schema tool

The new re-schema tool provides a GUI for updating the MongoDB collection schema. Like other tools provided by NoSQLBooster, it is essentially a code generation tool that helps you generate code to update the collection with a few clicks, and then you can use the generated code as a basis for more complex programming, then save it as a script file, or even add automated tasks.

This feature uses "$convert" operator and update using an aggregation pipeline, requires MongoDB server version 4.2 or above. We also provide a code template called convertFieldType to convert individual fields, which can be used directly in the script editor.

Re-schema Collection

MongoDB 5.0 support

NoSQLBooster 7.0 upgrades the MongoDB Node.js driver to the latest 4.1 and embedded MongoDB Shell to 5.0, adding support for all the new mongo shell methods and aggregation operators of MongoDB 5.0. For more information on MongoDB 5.0 , see Release Notes for MongoDB 5.0.

New Code templates for MongoDB 5.0

This release added a few code templates for MongoDB 5.0.

createTimeSeriesCollection

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//then press "tab" to complete code
createTimeSeriesCollection

//got
db.createCollection(
"name",
{
timeseries: {
timeField: "timestamp",
//metaField: "metadata",
//granularity: "hours"
},
//expireAfterSeconds: 86400
}
)

setWindowFields chain method

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
db.cakeSales.aggregate().setWindowFields //then press "tab" to complete code

//got
db.cakeSales.aggregate().setWindowFields({
partitionBy: "$state",
sortBy: { orderDate: 1 },
output: {
cumulativeQuantityForState: {
$sum: "$quantity",
window: {
documents: ["unbounded", "current"]
}
}
}
})

New date operators in SQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
db.shipping.insertMany([{custId: 456, purchaseDate: ISODate("2020-12-31") },{ custId: 457, purchaseDate: ISODate("2021-02-28") }]);//test data


//New date operators $dateAdd, $dateSubtract, $dateTrunc, $dateDiff, all of which can be used as SQL functions
mb.runSQLQuery(`

SELECT dateAdd(startDate='$purchaseDate', unit='day', amount=3, timezone='America/New_York') as DATE_ADD,
dateSubtract(startDate='$purchaseDate', unit='day', amount=3, timezone='America/New_York') as DATE_SUBTRACT,
dateTrunc(date='$purchaseDate', unit='week', binSize=2, timezone='America/New_York', startOfWeek='Monday') as DATE_TRUNC,
dateDiff(startDate='$purchaseDate', endDate='$$NOW', unit='day', timezone='America/New_York', startOfWeek='Monday') as DATE_DIFF
FROM shipping

`).sort({_id:-1})
.limit(100)

NoSQLBooster 7.0 also enhanced mouse hover for all new aggregation chain methods and aggregation Operators. In addition to method and type definitions, hover is now able to display document and example for these aggregation chain methods.

Task email notification

In version 7, automated tasks added the ability to notify via e-mail. You can specify that some users receive e-mail notifications of task completion or failure. All types of tasks can be notified by email.

To enable email notification,
Menu -> Tools -> Open Tasks... -> Select Task -> Edit -> Mail Notification

Task email notification

After you configure the default SMTP transport, you can also use the new code templates that starts with sendMail to add the ability to send mail to the script more easily. The following is the new code templates that starts with sendMail.

Send email code templates

Script Editor Improvements

Advanced code-complete

Version 7 can intelligently match typed text to enable completion beyond single words. Take the toUpperCase method of a string as an example. In the old version, you had to type "toU" or "Upper" to find the method. In version 7, just type "tu" to locate the "toUpperCase" method.

As shown in the following figure.

Advanced code-complete

Editor themes

Now, we have 14 built-in editor themes to choose from, and you can apply the editor's theme through the editor's right-click menu. It may also be set through the main menu.
Main Menu -> Options -> Editor Settings -> Themes

Editor themes

Change Editor font size

The font size of the editor also be set through the main menu. Main Menu -> Options -> Editor Settings -> Font size with a minimum of 6px and a maximum of 30px.

Editor font size

Switch rs member within the editor

As mentioned earlier in the replica set drop-down list, you can directly connect and switch members of the replica set within the script editor.

Switch rs member in editor

Send to external tool

You can send the editor contents to the external editor associated with the system through the editor's right-click menu.

Send to external editor

Results tabs and data viewer improvements

One-click grouping/filtering of date fields

For date fields, grouping by a certain point in time is not practical. In version 7, we have enhanced grouping of date and time fields. The one-click grouping function will be grouped by day (formatted by $dateToString operator), and users also modify the generated code to support more date ranges.

One-click group context menu

The $dateToString operator converts a date object to a string according to a user-specified format. The date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. Please refer to this page for format descriptors.

Group by date - generated code

One-click grouping of embedded array fields

When you use one-click grouping for an embedded array field, the generated code automatically prepends a $unwind stage.

Group by array field

New JSON view format (plain JSON)

In version 7, JSON view has three formats. MongoDB shell format is actually js code, which can be copied and pasted into mongo script. MongoDB Extended Type-conserving EJSON format is more suitable for data exchange. The new plain JSON is simple human-readable pure JSON text, losing type information.

JSON View - plain JSON

Navigation bar and automatic refresh of document viewer

Add a new navigator bar to document viewer, previous, next ... And, when automatic refresh is activated, the pop-up edit box and document viewer are refreshed synchronously.

Document viewer - navigator

Faster tab switching and tab switcher

In this release, after careful code review, we reduced unnecessary DOM reflows, greatly speeding up the response time for tab switching. The new tab switcher also provides more convenience for tab switching.

The following picture shows the tab switcher, and the orange item indicates that the tab is being debugged.

Tab switcher

Rename tab title

The following figure shows the right-click menu of the tab. Click "Rename Tab..." to rename the title of the selected tab.

Tab switcher

Export/Import connections and application configuration

In previous versions, exporting/importing connection could only export/import connection configuration information. In version 7, we redesigned this feature to export/import not only the selected connection configuration, but also custom queries, tasks, code snippets, favorites related to the connection, and general application configurations and options. You can use this feature to set up a backup for the application configuration.

Export/Import connections

Support for more export formats (.xlsb, .txt and .html)

Version 7 added 3 more export format. Excel 2007+ Binary Format (.xlsb), Max Rows: 1,048,576, UTF-16 Unicode Text (.txt) and HTML Tables(.html). Export in JSON format has also been enhanced, adding two options to output documents in a pretty-printed format and export to JSON files using standard JSON arrays (separator [,\n]).

The following figure shows all the supported export formats, and the red box shows the new.

More export formats

Other notable improvements

Better fake data generator

The faker.js module is updated to the latest 5.x version, and a large number of API methods are added to generate different types of fake data. We updated the GUI of test data generator and added the ability of name filtering and lookup. We also added several code templates that start with generateTestData to make it easier to generate fake data.

Fake data generator

More datetime field display format

In this version, we have added several date display formats, please refer to the following figure. Marked in red as new.

Date display formats

Set comments for any database objects

Now, you can set comments for any database objects. Note: Comments will not be saved to the MongoDB server in any way, only on your local computer.

Set comments

New query code generator (Java Use Builders)

In version 7, a new query code generator Java Use Builder has been added. The Java MongoDB driver dependency is also updated to modern API.

Java Use Builders

Open MongoShell here (prefer mongosh to mongo shell)

In addition to mongo (legacy mongo shell), this Open MongoShell here feature also supports mongosh (new mongo shell). When both mongosh and mongo can be found in the search path, mongosh will be preferred.

Open MongoShell here

Last accessed field in the connections dialog

The new "Last Accessed" field added to the connection dialog box. Allow sorting and filtering.

Last Accessed

Breaking Changes

Numeric Types

In order to be compatible with the behavior of the new mongosh, unlike previous versions (legacy mongo shell), version 7 does not need to explicitly declare the int32 type when submitting data, but automatically selects the closest equivalent type.

Compare the differences between version 6 and version 7 below

1
2
3
4
5
6
7
8
//In version 7, when the value is int32, int32 is inserted, 
//but in version 6 or below, if there is no explicit declaration, Double is always inserted
db.testCollection.insertOne({
a:1, //version 7: int32, version 6: double,
b:1.0, //version 7: int32, version 6: double,
c:1.1, //version 7: double, version 6: double
d: Number.MAX_SAFE_INTEGER,//version 7: double, version 6: double
});

Shortcuts

Due to the introduction of the debugger, some keyboard shortcuts have been adjusted, and you can view the bound shortcuts through the button's tooltip.

  • Press F5 to start debugging, CTRL+Enter|CTRL+F5 to run without debugging.
  • Press F6 to Run Selected Text/Current Statement.
  • Unlike previous versions, click the "Run" button or press CTRL+ENTER to always run the entire script even if you select some of the scripts.

Miscellaneous improvements and bug fixes

  • Upgrade MongoDB nodejs driver to v4.1. ref.
  • Upgrade major dependencies electron to v9.4, Chrome v83., Node v12.14, and V8 v8.3.
  • Upgrade embedded mongo shell to 5.0.
  • Upgrade ssh2 module to 1.3, support more server host key formats ref.
  • Update the type definition of the 3rd dependent library(lodash, Moment.js and Faker.js) to the latest.
  • Add a new "No to All" option to the confirmation dialog box for closing unsaved tabs.
  • Add "Watch instance/database/collection" menu items to the tools menu.
  • Add the "Test Connection" diagnosis function to the error window When the connection fails.

Patch Releases

Version 7.0.2

  • Fixed, error parsing MongoDB tools command line options: invalid argument for flag `--uri' (expected string): invalid syntax.
  • Fixed, error parsing mongodump command line options: unknown option "tlsAllowInvalidCertificates".
  • Improved, easier access to black editor themes.
  • Improved, tweak dracula and monokai dark themes.

Version 7.0.3

  • Improved, for sorting after one-click grouping, replace the original sorting stage instead of pushing one.
  • Improved, if it is connecting to a load balancer fronting a mongos like service, add a "load balanced" status to the connection node.
  • Improved, tweak the hover style of tables and trees with dark themes.

Version 7.0.4

  • Fixed, a MacOS edition bug that caused a zombie process when exit the program by pressing "CMD+Q".
  • Fixed, a MacOS edition bug where the global shortcut key "CMD+Q" was incorrectly bound.
  • Improved, reorganized the "Help- > Feedback/Support" sub menu and added items to send bug report and feature request.
  • Improved, remember the size and position of the connection editor dialog.
  • Improved, in the tree view, allow field names to be sorted by clicking the header of the key column.

Version 7.0.5

  • Fixed, an auto-complete bug that could not be popped up in some cases.
  • Fixed, a linux edition bug that caused a zombie process when exit the program.
  • Fixed, a "Option ssl_ca_certs is not support" error occurred when trying to connect to AWS DocumentDB.
  • Added, a "reload" reminder when an edit file opened with an external editor is modified.
  • Added, a "clear filter" action to the history script dialog.
  • Added, "Copy Path" and "Reveal in explorer" actions to the context menu when the script in the editor is a file.
  • Improved, UI performance of opening complex large documents.
  • Improved, bind the shortcut key "F6" to the "Run Selected Text/Current Statement" action.
  • Improved, If no breakpoint is set, pressing the shortcut key "F5" does not enter debug mode, which is equivalent to pressing "CMD+ENTER" to run the entire script without debugging.
  • Improved, change the title of the window to the title of the selected tab.

Version 7.0.6

  • Fixed, connection timeout error in some cases when connecting to a replication set through SSH tunnel.
  • Fixed, UI freeze error when writing a large file to script history.

Version 7.0.7

  • Fixed, a bug where the "find by database name" function did not work in the connection tree.
  • Improved, if you are upgrading from an older version to version 7, a "shortcut break change" prompt pops up when you first press the "Run" button.

Version 7.0.8

  • Fixed, a bug of an explain method of aggregation cursor.

Version 7.0.9

  • Fixed, a bug where orphaned processes caused by forced exit of the application resulted in high CPU usage, MacOS only.
  • Fixed, a bug that double-clicked to clone the current tab. if the current tab includes a $operator, the $operator will be mistakenly replaced with blank space.
  • Fixed, an error that caused an "$currentOp Aggregation provides invalid namespace" error when the "db.aggregate" method was executed.

Version 7.0.10

  • Fixed, an error where the date field was set to undefined when importing an EJSON file containing the $date field.
  • Fixed,a bug where the connection type was misplaced when importing the connection URI of "mongo+srv://".
  • Improved, more SSH key formats are supported, RSA, DSA, ECDSA (nistp-*) and ED25519 key types, in PEM (PKCS#1, PKCS#8) and OpenSSH formats.
  • Improved, optimized application icon in MacOS system.

Version 7.0.11

  • Fixed, a missing "save button" bug in the dialog of mongodump task editor in some cases.
  • Fixed,a SQL query error that reported an exception of "db.stats.aggregate is not a function" if the collection name is a method of db object (for example, the collection name is stats or version, "select * from stats").
  • Fixed,a link error in MSSQL uri connect format.

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.