Blog Photo

New features in dbKoda 0.8

  • Nov 5, 2017
  • Guy Harrison

0.8.0 is the third release of dbKoda. As well as numerous bug fixes, ths version of dbKoda allows query output to be rendered as a table or a chart. It also allow mongoDB shell commands to be translated to Node.js code that can be incorporated within a Node.js application.

As with previous versions, dbKoda is a free, open source, low-fat software product made by a small team of slaves developers in Melbourne Australia. It’s licensed under the AGPL 3.0, and is guaranteed to contain no nuts.

As well as many bug fixes, performance improvements and random changes, we added the following features:

View output as table

By default, dbKoda displays data in exactly the same format as would be returned by the MongoDB shell. In 0.7 we introduced the Enhanced JSON view that allows you to examine a single document in detail. In this release, we’ve introduced the table view, that allows you to view a collection of documents in a traditional table format. Nested documents within the table can be collapsed or expanded as required:


You can invoke the tree mode by right clicking wherever you see query output, and also select “View as table” from the tree to browse collection data in table mode:


View output as chart

We’ve also introduced a simple chart viewer so that you can explore your output graphically. You can view data as a chart by right clicking on any query output, and you can send output from the aggregation builder directly to the chart viewer by clicking on the Chart Icon within the aggregation builder.


When dealing with large data sets, it’s best to aggregate data into shape before sending it to the chart viewer. While the chart viewer can do in-memory aggregation, you still have to drag all the data across the network and the desktop aggregator is not as powerful as that in the MongoDB server.

Convert code to NodeJS

When building a NodeJS application, you often want to work on a MongoDB query or update operation in the shell first. This way you can check explain plan, validate syntax, expected outputs, etc. But although the NodeJS MongoDB driver support syntax close to the MongoDB shell, it’s not exactly the same, and you also have to manage callbacks or promises manually. So typically there’s a lot of boilerplate code to turn a shell command into a Node.js function.

To help with this we’ve implemented a Translate to native code option in dbKoda.


Translate to native code creates a general purpose function that implements the find(), update(), delete(), insert() or aggregation() operations contained in the editor window. This function accepts query parameters that represent the variable portion of the operation. The Node.js function returns a Javascript Promise that will resolve to the output of the query or the return status of the update operation. dbKoda also generates a snippet of code that executes the generated function with the parameters corresponding to those used in the shell window.

You can execute the native code from within dbKoda - it will be run within dbKoda’s embedded Node.js server and the output be returned to the output window.


Miscellaneous changes

We added a few icons down the bottom right of the product that can be used to configure the product, send feedback or collect logs and lodge a support request:


From left to right, the three controls are:

  • Preferences: Click this to change product configuration. Currently this is limited to changing the location of your MongoDB binaries and switching product telemetry on or off.
  • Feedback: A quick and anonymous way to tell us if you like the product or send us a comment without the rigmarole of opening a support ticket.
  • Support Bundle: If you do want to lodge a support request, you can create a ZIP or TAR file and email it to us. Saves us asking you for them anyway :-). Nothing personally identifiable is included.

Summing up

We hope you’ll give this new release a shot. Try it out and let us know what you think! Download dbKoda from and let us know what you think at our support site (or use the groovy new support button).