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

Read More

NoSQLBooster 8.1 Released! official support for MongoDB 7.0

We're so proud to release NoSQLBooster for MongoDB 8.1 today. This version includes official support for MongoDB 7.0, Visual explain for Slot-Based Query Execution along with some useful improvements and bugfix. For more information on MongoDB Server 7.0 , see Release Notes for MongoDB 7.0.

MongoDB 7.0 support

NoSQLBooster for MongoDB 8.1 added support for all the new mongosh methods, aggregation stages and operators of MongoDB 6.1-7.0. Aggregation Pipeline (db.xxx.aggregate().xxxx()) and Operator helper ($.) also add these helper methods.

New Aggregation Operators

MongoDB 6.3 introduces the following aggregation operators:

Name Description NoSQLBooster Helper method
$bitAnd Returns the result of a bitwise and operation on
an array of int or long values.
$.bitAnd()
$bitNot Returns the result of a bitwise not operation on
a single argument or
an array that contains a single int or long value.
$.bitNot()
$bitOr Returns the result of a bitwise or operation on
an array of int or long values.
$.bitOr()
$bitXor Returns the result of a bitwise xor (exclusive or) operation on
an array of int and long values.
$.bitXor()

New MongoDB 7.0 mongosh Methods

Name Description
db.collection.createSearchIndex() Creates an Atlas Search index on a specified collection.
db.collection.dropSearchIndex() Deletes an existing Atlas Search index.
db.collection.getSearchIndexes() Returns information about existing Atlas Search indexes on a specified collection.
db.collection.updateSearchIndex() Updates an existing Atlas Search index.

New MongoDB 7.0 Aggregation Stages.

Name Description NoSQLBooster Helper Method
$listSampledQueries Lists sampled queries for all collections or
a specific collection.
db.coll.aggregate().listSampledQueries();
$.pipelineBuilder.listSampledQueries();
$listSearchIndexes Returns information about existing Atlas Search indexes
on a specified collection.
db.coll.aggregate().listSearchIndexes();
$.pipelineBuilder.listSearchIndexes();

Visual explain for Slot-Based Query Execution

NoSQLBooster 8.1 supports visual the explain results of the slot-based execution engine. Click here to see MongoDB official information on slot-based execution engine.

Visual explain for SBE

Other Improvements

New Tooltip Show Event Option (ATL+MouseMove)

The tooltip message displayed with a delay of 1 second is sometimes quite annoying, and its inappropriate pop-up can sometimes cause unnecessary interference to the input. In 8.1 we added a new tooltip showevent option, you can use Alt+mousemove (hold alt key) to trigger the display of tooltip instead of the original mousemove event. When you press the alt key, the tooltip will be displayed immediately instead of being delayed for a second.

Use Menu -> Options -> Tooltip (Mouse Hover) to turn on this "ALT+MouseMove" option, default value is "Mouse Move".

Menu - Tooltip option

Minor Improvements and Bugfix

  • Fixed, Collection JSON import cause: E11000 duplicate key error when id policy is "overwrite_with_same_id" and the imported _id field is UUID.
  • Improved, Log Viewer - Use EJSON.parse instead of JSON.parse.

Patch Releases

Version 8.1.1

  • Improved, MongoDB AWS Authentication - add a "From Credential Process" option. More about it.
    AWS-Auth - fromProcess
  • Fixed, a mongosh command sh.status. output result compatible issue.
  • Fixed, an export error where the export option did not take effect. The error occurs when the export format is "Simple JSON Text" and the line separator is "\n,".

Version 8.1.2

  • Improved, Add Mongodump to the context menu of the database/collection tree node. Connection Tree -> Database/Collection Node -> Context Menu -> Export Collection -> Mongodump...
  • Improved, Add MongoRestore to the context menu of the database/collection tree node. Connection Tree -> Database/Collection Node -> Context Menu -> Import Collection -> Mongorestore...
  • Improved, Add "Add/Edit User Snippet..." item to the command palette.
  • Fixed, a bug where the tooltip could not pop up when the mouse hovered over the script history menu item.

Version 8.1.3

  • Fixed, a bug where console.log data was out of order when importing JSON file to collection.

Version 8.1.4

  • Fixed, an error where the license information in the status bar was displayed incorrectly.

Version 8.1.5

  • Fixed, an errors array undefined bug that was reported when copying a collection.

Version 8.1.6

  • Added, Right-click ObjectId/Reference field and choose "Follow Reference" will open a document viewer with document the ObjectID/Reference it points to. The shortcut key is "shift+F7".
    Follow Reference
  • Improved, SQL correlated subqueries to allow one end of the equality operation to be an array type. Use the $cond operator to select $in instead of $eq based on the data type of the field.
  • Fixed, an error where updating data reported a not-primary node error when read preference mode is secondaryPreferred.
  • Fixed, "BSONSymbol" method typing definition issue.

Version 8.1.7

  • Fixed, In some cases, there is an error in importing the external Relational database tables, improperly silencing the error message.
  • Fixed, a bug where non-public schema tables could not be listed when importing external data from PostgreSQL.

Version 8.1.8

  • Improved, Moved object explorer's tooltip to the right to avoid blocking the object tree. You can now also press Alt+F12 to switch the tooltip(MouseHover) show event to Mouse Move + Alt Key Pressed.
    Object Explore Tooltip
  • Improved, sorts the fields of the index creation dialog and caches the fields to speed up the display of the field list.
  • Improved, SQL - Simplifies the generation of MongoDB shell scripts that project fields embedded in the object array.
  • Improved, SQL - Support statements like select * from collection where "arrayObject" = elemMatch(name LIKE '%abc%', title = RegExp('abc', 'i')), LIKE and RegExp in elemMatch where condition.
  • Fixed, a bug with copy collection that caused an infinite import error when the source and target collection were the same.
  • Fixed, a collection export error. When there is already an active query in the current tab, a collection export error occurs when clicking on Export Collection in the right-click menu of the object explorer.
  • Fixed, a bug that pressing Command+Shift+[ or Command+Shift+] to switch tabs doesn't work under MacOS.
  • Fixed, a bug that clicking on a collection in the search result list of the object tree could not open the collection directly.

Version 8.1.9

  • Improved, to avoid too much invalid logging, only the first command output is printed when the mongosh command is inside a for loop.
  • Improved, in the "Add script to favorites (user snippets)" feature, it is possible to override renamed code snippets.

Version 8.1.10

  • Fixed, a bug in the UI display when the tree view is refreshed
  • Improved, allow connection to MongoDB Server 8.0.

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.

AWS IAM Passwordless Authentication support

In 8.0.12, NoSQLBooster added support for MongoDB-AWS IAM authentication. Now you can connect to MongoDB with AWS IAM (AWS Single Sign-On) Passwordless Authentication.

Configure AWS SSO Authentication

Set up AWS Profile for AWS CLI with AWS SSO configuration

If you want to learn how to use AWS single sign-on (SSO) to set up AWS CLI, you can refer to the following documentation.

Here, we have set up AWS Profile for AWS CLI with AWS SSO configuration with the following configuration of our AWS SSO setup.

The location of the configuration file is ~/.aws/config.

1
2
3
4
5
6
7
8
9
10
11

#######################
#### AWS SSO ####
#######################

[profile aws-sso-demo-account]
sso_start_url = https://d-93670bbbbb.awsapps.com/start
sso_region = eu-west-1
sso_account_id = 012345678910
sso_role_name = PowerUserAccess
region = eu-west-1

Set up AWS SSO Authentication in NoSQLBooster

  1. Open the connection configuration editor of NoSQLBooster, switch to the Authentication tab, and use the MongoDB-AWS authentication method.

AWS-Auth interface

  1. Check the "From SSO (AWS Single Sign-on)" checkbox.
  2. Fill in the configured AWS profile "aws-sso-demo-account" in the "Credential Profile" edit box.
  3. Click "Test connection".

AWS SSO auth

These are all the configuration steps.

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.

NoSQLBooster 8.0 Released!

We are pleased to mark another important milestone for NoSQLBooster for MongoDB, the final version of 8.0. This major upgrade includes using mongosh instead of legacy mongo shell as an embedded shell, support for MongoDB 6.0, MongoDB operator helper, aggregation pipeline builder, a separate result tab for each mongosh command, greatly improved data view, one-click filtering/projection, import and export tools, test data generator and more.

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

NoSQLBooster 8.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 8.0.

Main interface

Let's dive in and get an overview of what's coming in NoSQLBooster 8.0!

Although we are showing screenshots of NoSQLBooster for Windows, all these new features are available for Mac OS X and Linux as well.

Read More

NoSQLBooster 7.1 Released!

We're so proud to release NoSQLBooster for MongoDB 7.1 today. This version includes MongoDB Node.js driver Upgrade from 4.1 to 4.4, Data types compatible with mongosh, MSSQL connection string, More font options, ReplicaSet Member Tags along with some useful improvements and bugfix.

Node.JS Driver Upgrade From 4.1 to 4.4

MongoDB Node.js driver upgrade from 4.1 to 4.4 in NoSQLBooster 7.1. And, we have updated the typing definition of mongoshell methods to synchronize to the latest version of MongoDB. While upgrading to the latest MongoDB Node.js driver, we still maintain support for the old version of MongoDB server. NoSQLBooster supports MongoDB server versions 2.6 to 5.3.

Data Types Compatible With mongosh

NoSQLBooster 7.1 adds Int32(NumberInt), Long(NumberLong), Decimal128(NumberDecimal) data types to be compatible with mongosh.

1
2
3
4
5
Int32(1); //= NumberInt(100) in legacy mongoshell

Long("123"); //NumberLong("123") in legacy mongoshell

Decimal128("-1"); //NumberDecimal("-1") in legacy mongoshell

More Fonts and Font Ligatures Support

In 7.1, we have four built-in editor fonts (Hack, Fira Code, JetBrain mono and Source Code Pro) to choose from. Fira Code and JetBrain Mono support font ligatures.

Use the editor's right-click menu to set the font, and you can also switch the editor font through the main menu.
To use it, Click Menu -> Options -> Editor Settings -> Font.

Left: ligatures as rendered in Fira Code. Right: same character sequences without ligatures.

Font Fira Code

Display Tags in the Rs Member Selector

You can directly connect and switch members of the replica set within the script editor. MongoDB Atlas clusters are configured with pre-defined replica set tags for different member types in the cluster. In 7.1, the tags for the member are displayed in the member set selector to make it easier to select a specific member by member type and region. Note: current user need to have permission to execute replSetGetStatus command.

RS Member Selector Tags

Support MSSQL Classic Connection String

When importing data from a MSSQL database, two formats of connection string are supported. Both formats need to start with the string "mssql://"

  • Classic Connection String
1
2
mssql://Server=localhost,1433;Database=database;User Id=username;Password=password;Encrypt=true
mssql://Driver=msnodesqlv8;Server=(local)\INSTANCE;Database=database;UID=DOMAIN\username;PWD=password;Encrypt=true
  • Connection String URI
1
2
mssql://username:password@localhost:1433/database?encrypt=true
mssql://username:password@localhost/INSTANCE/database?encrypt=true&domain=DOMAIN&driver=msnodesqlv8

Other Improvements

Log Windows - Filter Row and Sorting

NoSQLBooster's client-side user query log window is a very useful function for diagnosing query problems. In 7.1, we enhanced the UI function of the log window, adding sorting and filter row.

Log Window with Filter Row

Tooltip - ShowDelay 1s

Displaying tooltips too frequently is really a bit annoying. In 7.1, we increased the display delay of tooltip and menubutton from 100ms to 1000ms, hoping to partially solve this issue.

Read More

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

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.

Read More

NoSQLBooster 6.2 Released! One-Click Export to Excel

We're so proud to release NoSQLBooster for MongoDB 6.2 today. This version includes one-click export to XSLX and view as spreadsheet in Excel, object Explorer multiple selection operations, importing CSV files, and other ease-of-use improvements and bug fixes.

Export and Import Enhancement

This version brings several enhancements to import and export, One-Click Export to XSLS, Import CSV Files and Preprocess Imported/Exported Data(transformer).

One-Click Export to XSLS and View as Spreadsheet in Excel

No popup dialog box settings, set various export options, then click execution. The new "One-Click Export to XSLS" feature makes the entire export process quite easy, click Excel icon on toolbar, query results are exported and opened in Excel, now you can continue working with this data within Excel. Note that a XLSX worksheet can contain up to 1,048,576 rows of 16384 columns.

Click the new excel icon in the toolbar

One-Click Export to XSLS

View as spreadsheet in Excel

View as Spreadsheet in Excel

Read More

NoSQLBooster 6.1 Released! official support for MongoDB 4.4

We're so proud to release NoSQLBooster for MongoDB 6.1 today. This version includes official support for MongoDB 4.4, SQL exclude column, SQL UNION, Table view filter row along with some useful improvements and bugfix. For more information on MongoDB 4.4 , see Release Notes for MongoDB 4.4.

MongoDB 4.4 support

NoSQLBooster for MongoDB 6.1 upgrades the MongoDB Node.js driver to the latest 3.6 and embedded MongoDB Shell to 4.4, adding support for all the new mongo shell methods and aggregation operators of MongoDB 4.4.

Union All ($unionWith Stage) and New Aggregation Operators

MongoDB 4.4 adds the $unionWith aggregation stage, providing the ability to combines pipeline results from multiple collections into a single result set. NoSQLBooster 6.1 adds "unionWith" chain method to AggregationCursor and provide the appropriate code snippets and mouse hover information to support code completion. In addition to the enhanced chain method, NoSQLBooster also enhances SQL queries to support SQL UNION and UNION ALL.

1
2
3
4
5
6
7
8
db.suppliers.aggregate()
.project("state,-_id")
.unionWith({
coll: "warehouses",
pipeline: [{
$project: { state: 1, _id: 0 }
}]
})

Equivalent to the following MongoShell script, but more concise, and easy to write, not to mention code completion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
db.suppliers.aggregate([{
$project: {
state: 1,
_id: 0
}
}, {
$unionWith: {
coll: "warehouses",
pipeline: [{
$project: {
state: 1,
_id: 0
}
}]
}
}])

NoSQLBooster 6.1 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 chained methods.

SQL Query Improvements

Exclude Columns in a SQL Query

NoSQLBooster6.1 extends the syntax of the SQL query. You can exclude the selected columns from the query results by adding a minus sign (eg. -_id) to the name of the columns. The MongoDB query implicitly returns the _id field, see the following example to exclude the _id column from the query result.

1
SELECT number, concat(first_name,' ',last_name) as name, salary,-_id FROM employees
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//javascript
use NoSQLBoosterSamples
//prepare test data
db.employees.insert([
{_id:1, "number":1001,"last_name":"Smith","first_name":"John","salary":62000,},
{_id:2, "number":1002,"last_name":"Anderson","first_name":"Jane","salary":57500},
]);

//Let's fetch the first_name, last_name and salary fields of the employees available in employees table and
//sort the result in the descending order by salary.
//use -_id to exclude _id column
mb.runSQLQuery(`

SELECT number, concat(first_name,' ',last_name) as name, salary,-_id FROM employees

`);

The result of the query is as follows, and the _ id field has been excluded

number name salary
1001 John Smith 62000
1002 Jane Anderson 57500

Read More

NoSQLBooster 6.0 Released!

Today, we are incredibly pleased to announce the release of NoSQLBooster 6.0. It brings many new features to improve the productivity of MongoDB'ers, tasks and task scheduler, command-line interface, Golang, PHP and Ruby added to query code, ESNext features optional chaining and nullish coalescing, mark types with colors, greatly improved table view, one-click projection, add date time to export file path, favorites feature and more.

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

NoSQLBooster 6.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 6.0.

Main interface

Let's dive in and get an overview of what's coming in NoSQLBooster 6.0!

Although we are showing screenshots of NoSQLBooster for Windows, all these new features are available for Mac OS X and Linux as well.

Read More

NoSQLBooster 5.2 Released! official support for MongoDB 4.2

We're so proud to release NoSQLBooster for MongoDB 5.2 today. This version includes official support for MongoDB 4.2 along with some useful improvements and bugfix. For more information on MongoDB 4.2 , see Release Notes for MongoDB 4.2.

MongoDB 4.2 support

NoSQLBooster for MongoDB 5.2 upgrades embedded MongoDB Shell to 4.2.0, adds support for all the new shell methods and operations of MongoDB 4.2.

Merge and Other New Aggregation Stages

MongoDB 4.2 adds a few new aggregation pipeline stages, $merge, $planCacheStats, $replaceWith, $set and $unset. NoSQLBooster 5.2 adds these chain methods to AggregationCursor and provide the appropriate code snippets and mouse hover information to support code completion.

1
2
3
4
5
db.users.aggregate()
.planCacheStats({})
.replaceWith("$name")
.set({name: {$concat: ["$f_name", "$l_name"]}})
.unset(["f_name","l_name"])

Equivalent to the following MongoShell script, but more concise, and easy to write, not to mention code completion.

1
2
3
4
5
6
db.users.aggregate([
{ $planCacheStats: {} },
{ $replaceWith: "$name" },
{ $set: { name: { $concat: ["$f_name", "$l_name"] } } },
{ $unset: ["f_name", "l_name"] }
])

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

Read More