This page describes Calíope 1.5, the version we are building right now. 1.4 is finished and in App Review, and the store serves 1.3 on the Mac and 1.2 on iPad. The changelog says which version each feature landed in.
Adds an “Open in Calíope” button to every topic. It only works with the app installed.
How to move around a MongoDB server’s databases, collections and documents.
Where it is: Workspace › Tools › Collections
The browser lists the chosen database’s collections on the left and their documents on the right, as collapsible trees.
A document is not a row: two neighbouring documents may share no field at all, which is why there is no column grid. Each value shows its type — ObjectId, decimal128, date, binary — which in a schemaless database is half the information.
To edit, press the pencil: the document opens as extended JSON and is saved whole, identified by its _id. Without an _id it cannot be edited or deleted, and that is said instead of offering buttons that would touch a different document. Views are read-only and marked as such; capped collections are flagged too.
Filters, projections, sorting and aggregation pipelines.
Where it is: Workspace › Tools › Query
The query tool has two modes. “Find” applies a filter, a projection and a sort order, all three written as JSON documents. “Aggregate” runs a full pipeline, which is a list of stages.
Results arrive in pages: ask for more with “Load more”, and the server-side cursor is closed when the query changes — an abandoned one stays alive for ten minutes holding memory.
Results are not edited here: an aggregation has no original document to write changes back to, and with a projection the missing fields would be lost on save. Use the browser to edit.
View, create and drop indexes, including unique, sparse and expiring ones.
Where it is: Workspace › Tools › Indexes
The list shows each index with its keys and properties: unique, sparse or with an expiry (TTL).
When creating one, the keys are written as a document: 1 is ascending, -1 descending, and “text” or “2dsphere” are valid for text and geospatial indexes.
The _id index cannot be dropped because the server maintains it, so no button is offered. Dropping any other one makes the queries that used it scan the whole collection.
What on the relational side are the dashboard, the process list and users.
Where it is: Workspace › Tools › Server
It gathers three things that in MongoDB come from three server commands: its status (version, uptime, connections, memory and cumulative operations), the running operations, and the users with their roles.
An operation can be stopped only if the server declares it killable; for the rest no button is offered, because that would promise something that does not happen.
Custom roles belong to a specific database, so the ones listed are those of the database you are looking at.
The MongoDB profiler: what level each database is at and what it recorded.
Where it is: Workspace › Tools › Profiler
The profiler has three levels: off, only the operations that cross the threshold, and all of them. The threshold is in milliseconds —not in seconds, like MySQL’s— and the sample rate, between 0 and 1, says what proportion of the slow ones gets recorded: below 1 the server discards slow operations on purpose.
The level belongs to each database, not to the server. That is why the toolbar carries its database picker and everything read and written refers to the chosen one. And it lives in memory: restarting the server returns it to whatever its startup configuration says.
What gets recorded goes to “system.profile”, a 1 MB capped collection per database: it is a window on the latest operations, not a history, and its documents have no “_id”, so they are read and not edited. Emptying it drops the collection, and that requires turning the profiler off for a moment: Caliope turns it off, drops it and restores the level that was there.
There is no “by statement” view like the one in the relational slow query log: MongoDB publishes no aggregate summary by operation shape, and computing it on the client over a 1 MB window would claim more than the data supports.
On shared Atlas and behind “mongos” levels 1 and 2 cannot be set: there the server only accepts 0.
The way out for whatever the interface does not cover.
Where it is: Workspace › Tools › Commands
In MongoDB a command is a document, and this tool sends it as-is and shows the whole response.
It covers what no interface does: validating a collection, asking for statistics, explaining a query or any administrative command. The examples menu brings the most frequent ones ready to run.
You choose which database it goes to, because some commands are only accepted on “admin”.