Mingo is the latest addition to the family of MongoDB Admin tools, yet it aspires to be the most widely used of all such tools. The goal is to create the most user-friendly and fastest app, packed with features helping (mainly) Javascript / NodeJS developers in managing their MongoDB. Let's see if we can make it :-).
Mingo is being developed by David and Rad. We are not even a small start-up and we haven't raised any money to build Mingo. Just two guys enjoying our work. We'd like to create a small helpful app, get to know nice people and learn a lot along the way.
To make Mingo really usefull, we need your feedback. So if you happen to find a bug, report it, please.
Don't dismiss Mingo right away. Thank you.
Ideas, feature requests and even minor usability issues are the caffeine that keeps us rolling.
Please, submit your ideas on Github.
Mingo is available for Mac (OSX), Linux and Windows. You can download Mingo at our download page.
Apple / Mac (OSX) | Mingo for Apple is available in three formats: DMG, ZIP, PKG. We recommend the DMG format. Download the latest version here. |
Linux | Mingo for Linux is available in tree formats: AppImage, Deb, Snap. Download the latest version here. |
Windows | For windows, Mingo is packaged as NSIS. Download the latest version here. |
Since most other MongoDB GUIs encrypt their connection data, we are not able to import these settings easily to Mingo. Furthermore, Mingo's projects are a new concept and so we cannot import them.
Setting up connections and projects in Mingo take a few seconds, just copy your Mongo URI and you'll be set to go. Thanks for understanding.
Mingo supports multiple windows at a time - a workspace. Each connection and project has its own workspace. You can switch between workspaces with the workspace selector at the top of the sidebar.
Mingo's sidebar is the main navigation. It contains:
Allows selecting the connection / project you want to work with. Your entire view (Mingo's window) is focused on the workspace you have selected.
This is a tree view of databases and their collections. Use right-click on a database or a collection to show the respective context menu.
If you click on a collection, it will open a new tab.
Mingo shows basic collection stats if you point the cursor at it.
Tabs in Mingo work the same way you are used to from a browser. You may rearrange tabs (drag & drop or keyboard shortcuts), close, reopen closed tabs or close "other" tabs.
The following types of tabs are currently used in Mingo:
Tabs are separated into views (such as "Documents", "Aggregator", "Indexes" or "Export" in case of a collection tab).
Mingo has lots of features and these are mostly hidden to keep the UI clean. Most features can be found using the context menu (mouse right click). The context menu works as usual, showing options for the item you click on. Such items are database or collection (in the side bar), a document, a document field, etc. So, if you want to "do something with a document field", open the document and right-click on the field in question.
When you open a new tab, Mingo's finder will pop up. It let's you open collections or databases swiftly. Just start typing the name of a collection, for example, and Mingo will give you suggestions.
Use up and down arrow keys to select a collection and left or right keys to choose the a view. Enter to submit.
To make using Mingo even faster and more intuitive, it features a lot of keyboard shortcuts. We didn't want you to learn new set of shorcuts, so we tried to use the same ones you are used to.
CTRL+R | reload the content of the current tab's view (for example reload documents) |
CTRL+F | find in page (fulltext) |
CTRL+N | open a new Mingo window |
CTRL+T | open new tab |
CTRL+W | close current tab |
CTRL+SHIFT+T | reopen recently closed tab |
CTRL+1 - CTRL+8 | focus n-th tab |
CTRL+9 | focus last tab |
CTRL+LEFT | focus tab to the left |
CTRL+RIGHT | focus tab to the right |
CTRL+SHIFT+LEFT | move current tab to the left |
CTRL+SHIFT+RIGHT | move current tab to the right |
CTRL+TAB | focus previous tab |
CTRL+R | reload documents |
CTRL+A | select all documents |
CTRL+Enter | in query input to submit |
CTRL+S | focus query input (selector) |
CTRL+Z | open Mingo UNDO |
Point cursor at document and press X (only letter x) or space | select that document |
Point cursor at document header and press CTRL+C | copy the entire document |
Point cursor at document and press E | edit the document |
Point cursor at field and press CTRL+C | copy the value |
Point cursor at field and press E or Double-Click | edit the field inline |
Type { | to focus query input (selector) |
A connection is exactly what you are used to from other MongoDB GUIs. Connections allow full database and connection management.
To create a new connection, click the workspace selector (top left) and select the Add new Connection / Project option. In the modal window, choose Create a connection.
Color | Select a color that will represent your connection in Mingo. Collections, tabs and some other UI elements will be using this color to remind you what collection you are working with. |
Name | Choose a short descriptive name for your connection. Examples: "Localhost", "My project", etc. |
Favicon | An optional favicon to represent the connection. You may use an image or a Font Awesome icon.
|
Mongo URI | The mongo URI of your connection. This could be in standard or SRV format. In case of sharded connections, include the URI with all sharded connections separated by a comma. MongoDB URI documentation can be found here. |
Connect using SSH |
In case you need to use an SSH tunnel to connect to your database, select this option and fill in the details:
|
To update an existing connection, click the workspace selector (top left) and then click pencil icon by the connection you would like to update. Follow the same rules as for Creating a connection.
Mingo will regularly scan your connection for databases and collections. In case you need to refresh the connection, you can do it manually using the workspace selector and clicking on "Refresh". This is, however, rarely necessary, as Mingo will do it automatically (for example, when collection is added, removed, renamed, etc).
To delete an existing connection, click the workspace selector (top left) and then click pencil icon by the connection you would like to delete. At the bottom left of the modal window, click the Delete connection... This will ask you for confirmation before deleting the connection.
Mingo came up with the concept of Projects. A project is like a wrapper on several connections to “sibling” databases, such as “development”, “production”, “testing”, “staging”. Mingo treats these databases as “similar” and understands the relationships between them. Query history, bookmarks, pinned columns and other settings are shared across each database.
Furthermore, projects simplify daily tasks such as "Dump Production DB into Development DB", "Copy collection from Production to Dev" or "Send one document from Production to Dev" with one click.
To create a new project, click the workspace selector (top left) and select the Add new project / Project option. In the modal window, choose Create a project.
Name | Choose a short descriptive name for your project. Examples: "Carrot", "Pine tree", etc. |
Favicon | An optional favicon to represent the connection. You may use an image or a Font Awesome icon.
|
Databases | Each project may contain several databases. These databases are usually on different connections (servers) and refer to databases of the same project. Examples would be "Development", "Production", "Backup", "Staging", etc. Each database is esentially a connection with the same settings as a connection. |
Connect using SSH |
In case you need to use an SSH tunnel to connect to your database, select this option and fill in the details:
|
To update an existing project, click the workspace selector (top left) and then click pencil icon by the project you would like to update. Follow the same rules as for Creating a project.
To delete an existing project, click the workspace selector (top left) and then click pencil icon by the project you would like to delete. At the bottom left of the modal window, click the Delete project... This will ask you for confirmation before deleting the project.
Write-Lock will prevent unintended changes on documents of a locked database.
Databases are locked by default. You may unlock the database from the database context menu. When trying to perform a write action on a locked database, Mingo will ask ask you to confirm the action by allowing to unlock the database for 10 minutes or completely.
To view the list of all collections of a database, click the Collections & Stats in the database context menu. This is an alphabetical list with basic statistics. To view detailed information about a collection, just click on its row. To perform actions on a collection, use right-click on the row.
You may also add a new collection in this view using the Create new collection button at the top.
To create a new database, click the "Create Database" button in the sidebar below the existing databases. Creating a new database is only possible in a connection and you (the user) must have relevant privileges.
Mingo features a great dump tool to simplify and automate dumping, duplicating and copying collections across databases.
To open the Dump tool, right-click on a database in sidebar and choose Dump database....
Mingo lets you save the current dump / copy settings and reuse them again quickly when needed. Settings are stored for the current database only. To save the settings, use the Save button in main menu bar. To open, use the Open button and select the settings.
Mingo's NodeShell let's you execute JavaScript code to work with data directly in Mingo.
This is NOT MONGO SHELL, though.
The command must be a regular async JS function with a return value.
This allows complex code with loops, conditions and variable initialization to be executed. This code must be a definition of a async function and should return something to see "results". You can use this to fetch and process data using JS code and return the result or update documents using a script with loop, etc. Examples:
async function run() {
return await db.collection("").find({});
}
async function run() {
const docs = await db.collection("Amenities").find({}).toArray();
for (const doc of docs) {
await db.collection("Amenities").updateOne({_id: doc._id}, {$set: {something: "new"}})
}
return docs.length;
}
async function run() {
const oldSlug = await MingoPrompt('What was the old slug?')
const newSlug = await MingoPrompt('What will be the new slug?')
const confirmed = await MingoConfirm('You want to change ' + oldSlug + ' to ' + newSlug + '?');
if (!confirmed) return false;
const result = {
'Locations': await db.collection("Locations").update({slug: oldSlug}, {
"$set": { "oldSlug": oldSlug, "slug": newSlug }
}),
'Attractions': await db.collection("Attractions").updateMany({locationsCache: oldSlug}, {
"$set": { "locationsCache.$": newSlug }
}),
}
return result;
}
You can use the following variables in your code:
Mingo provides some example snippets. You may also save your code for later use. Code is saved for each database separately. History of your executed commands is also available.
If you need to refresh database information, collections and basic stats, you may do this manually using the context menu (right-click) on the database in sidebar and select Refresh. Mingo, however, does this automatically in the background.
Dropping an entire database with all collections and their data is possible using the context menu (right-click) on the database in sidebar and selecting Drop database.... Mingo will ask for a confirmation.
When you open a new tab with a collection, that tab is dedicated to the selected collection. It provides all the tools and actions you may need to perform on a collection.
At the top left, you'll find your current location: Connection -> Database -> Collection. Next to it, the pills represent views / features / tools to work with the collection:
Mingo lets you copy your collection into a different database or new collection very easily with just a few clicks. This will take you to Mingo's Dump tool and preset your selection. Just submit your action and Mingo will perform the copying.
Basically the same functionality as with Copy collection to, but dumps the collection into a directory or archive file. This action opens the same Dump tool, but with different settings.
This option focuses the Export view in the collection tab. The details of how to export documents are described in the Export section of the docs.
This action opens the View generator form in a modal window. Creating views requires a basic knowledge of how they work, so refer to the MongoDB documentation, please.
This does what it says and it's very simple. Just provide the new collection name.
Truncating a collection means deleting all its documents completely, essentially making it empty. All associated Views and Indexes are kept. So use this feature wisely. There's NO UNDO for this action.
Dropping a collection means deleting all its documents and the collection itself, completely. Views and Indexes are deleted, too. So use this feature wisely. There's NO UNDO for this action.
Mingo's documents browser is the most convenient way to browse, view and work with MongoDB documents.
To find and view documents, Mingo let's you define a query and a sorting object. Skip and limit are replaced with pagination. Projection is also omited to prevent confusion by showing the documents as they are. Also, Mingo handles huge documents easily.
The query editor has many hidden features you should know about.
CTRL+Enter
or just Enter
, depending on your settings. To refresh the documents' list, just press CTRL+R
{ user.lastName: "Pear"}
will be automatically corrected to { "user.lastName": "Pear"}
.Mingo supports human-readable shorthands for dates in queries. Compare the following two queries:
{
"createAt": {
"$gte": ISODate("2020-02-21T00:00:00Z"), // or new Date(…)
"$lt": ISODate("2020-02-28T00:00:00Z") // or new Date(…)
}
}
{
"createdAt": #lastWeek
}
There are two main types of date shorthands available:
{"createdAt": #lastWeek}
will search for documents where createdAt is between the beginning and end of last week.{"createdAt": @2021-11-22}
will search for documents where createdAt is EXACTLY the moment of the start of that day.#today | since the start of the today |
#yesterday | during yesterday |
#tomorrow | during tomorrow |
#thisWeek | during the current week |
#thisMonth | during the current month |
#thisYear | during the current year |
#lastWeek | during the previous week |
#lastMonth | during the previous month |
#lastYear | during the previous year |
#lastYear | during the previous year |
#last{number}{period} #last2days, #last14weeks, #last3years | During the last {number} {period}. Use any number and one of the following periods: minutes, hours, days, weeks, months, years. This is case insesitive, so you may use #last4Years. |
#next{number}{period} #next2days, #next14weeks, #next3years | During the next {number} {period}. Use any number and one of the following periods: minutes, hours, days, weeks, months, years. This is case insesitive, so you may use #next4Years. |
#2021-11-22 | during any specific date |
#2021-11 | during any specific month |
#2021 | during any specific year |
#2021-11-22:2021-11-25 | between two dates, inclusive |
#2021-11:2021-12 | between two months, inclusive |
#2021-2022 | between two years, inclusive |
#since2017-10-03 | since any specific date |
#before2017-10-03 | before any specific date |
Indexed fields can be searched swiftly by using the value as query.
So instead of providing an object as a query, such as {city: 'Amsterdam'}
, you can simply use Amsterdam
as the query. Mingo will try to find the phrase "Amsterdam" in ALL the indexed fields.
You can even use regular expressions as quick queries, such as /amsterdam/i
.
{_id: “KdMKY4qzDik3sm6CE”}
. This also works with ObjectIDs.Mingo supports querying by regular expressions. For example: {firstName: /david/i}
.
You can even use regular expressions as quick queries, such as /david/i
.
This is a great feature, especially combined with Quick Search. Pressing CTRL+G will paste the current clipboard value into the query field and submit it. The pasted value could be a regular query or just a phrase or _id copied from your admin or other app.
Mingo shows 50 documents per page. Click a document to view its content. Click on any field to expand its subdocuments. CTRL++click will expand the document (or field) recursively.
When a collection is opened for the first time, Mingo will try to pick a few fields to show as columns by default. Any changes you make to them will be saved as defaults for the collection.
Right-click any document to get a list of options and actions for that document.
Mingo supports actions upon multiple selected documents.
Right-click any field to get a list of options and actions for that field.
UNDO is available to reverse changes done by insert, update or remove operations. Press CTRL+Z to open the list of recent changes to documents. You may then select the action to UNDO.