Radoslav Toth
June 8, 2022

Data relations in Mingo

When documents reference each other, they usually do so by the _id of the referenced document. There are several types of document relations (such as one-to-many, one-to-one, many-to-one, many-to-many), but we can generally say that there is always a parent document (the one referencing) and a child document (the one being referenced).

For example, you could have the following document in Orders referencing a document in Users collection:

{
  _id: new ObjectId("8cc43bb95dd51baa970ae4ad"), 
  user: new ObjectId("51baa970ae4ad8cc43bb95dd")
}
{
  _id: new ObjectId("51baa970ae4ad8cc43bb95dd"), 
  firstname: 'John',
  lastname: 'Smith'
}

When you are viewing the Orders collection, the ObjectId("51baa970ae4ad8cc43bb95dd") does not say much to you. It would be much more preferable to see that it is actually John Smith.

Mingo's aproach to the problem

To make your data more readable, Mingo analyzes possible data relations within a database and shows more human information about the referenced documents and the relation itself.

Human readable info about the document that is being referenced.

Mingo searches through samples of documents from each collection and identifies fields that look like an _id. Then it tries to find those _id's in the database. When found, it creates a relation and guesses the best field to show as a preview. In the example above, the document references the Schools collection document and the "name" field was chosen to be the preview value.

The same relation is then shown in the referenced document:

Relations are automatically analyzed upon first connect to the database.

Managing data relations

Usually, there is very little you have to do for relations to work properly in Mingo. To view the currently known relations, right-click the database in the sidebar and select Data Relations:

The list of Data Relations will be shown:

List of data relations within a database

In the above screenshot, the first relation means the following: Documents from the Billing collection reference by the field "school_id" documents in the Schools collection. The "name" field in the Schools collection was chosen to show a more human value.

Add a new relation

Mingo let's you add a new relation in the list of relations (mentioned above) or gives you the opportunity to do so when it guesses a field is an _id, but there is no relation set so far:

Edit an existing relation

To edit a relation from the list of data relations, just click the pencil icon. You can also edit the relation where the preview is shown in the documents. Just click the cog icon.

Follow the instructions in the modal to update or remove the relation.

The last checkbox is worth mentioning: "Update all preview paths for 'Schools' to 'name'". This allows you to update the preview field for collection in all existing relations at once. It is very handy when you have several relations poiting to the same collection.

Delete an existing relation

To delete a relation from the list of data relations, just click the trash icon. You can also delete the relation where the preview is shown in the documents. Just click the cog icon and press the delete button in the bottom left corner of the modal.

Other considerations

Extra information is requested from the database to show the related document's preview field. Mingo is optimised to do this efficiently, but if you have many relations, it could have performance implications. If this negatively affects your user experience or puts a burden on your server, minimize the number of relations to those you really need. You can also delete them all completely.

Mingo's algorithm analyzing the relations is not perfect if your data is not consistent or you use very specific values for your _ids. In such case, we recommend setting your relations manually.

The preview fields are selected automatically by Mingo using simple criteria. In case an inappropriate field is selected, you can edit the relation and update the preview field manually.

Read more

v1.13.5 released

We are regularly releasing new versions and did it again today. The latest release contains several UX improvements, fixes 4 reported bugfixes (thanks!) and 10+ unreported issues we found ourselves. Please keep reporting issues, we appreciate any feedback! Mingo should suggest the update automatically, or you can download it directly from our Download page.
Radoslav Toth

Using Mingo with FerretDB

Mingo is a suitable solution for a GUI for MongoDB and its open-source alternative, FerretDB. Since FerretDB is open source, developers can fully control and adapt it to suit specific needs. FerretDB with Mingo will offer you a visual representation of data and a user-friendly interaction, among other benefits. What is FerretDB FerretDB is the […]
Daniel Njeru

Taking Your Company to New Heights with MongoDB Charts in Mingo

Today we demystify how Mingo can ease your pain as a MongoDB user. Mingo has had positive reviews from all companies that have tried it out. Some users have loved it for its wide range of features that are not in other GUI tools, while others have remained loyal to us due to our favorable […]
Daniel Njeru

How to set up MongoDB charts in Mingo

MongoDB charts are used to create a visual representation of MongoDB data. With MongoDB charts, you can communicate insights clearly and concisely. The feature will be useful when analyzing trends, presenting information, or making data-driven decisions. Complex information is conveyed in a more accessible format. That way, you can focus on developing actionable plans. Mingo […]
Daniel Njeru

Demystifying Data Modeling in MongoDB: A Step-by-Step Approach

Data modeling is the process of defining how data is stored and the relationships that exist among different entities in your data. The organization of data inside a database is referred to as a schema. When developing your schema, put more thoughts on your application than your database. A good data model makes data management […]
Daniel Njeru

Indexing Strategies for High Performance in MongoDB

Indexes are unique data structures that store a small portion of the collection’s data in an ordered form that is easy to traverse and search efficiently. They point to the document identity and allow you to look up, access, and update data faster. In MongoDB, indexes are used to improve query performance. Indexes improve query […]
Daniel Njeru

Which companies are using MongoDB

Those who come bearing advice are rarely popular. Daedalus did not do his son Icarus any favors by warning him not to fly too close to the sun as his wax wings would melt, causing him to fall. Had Icarus not ignored his father’s advice, he would not have plummeted to his death. By all […]
Daniel Njeru

New version released: 1.13.1

Here's a short list of bug fixes and improvements in our latest release. It is definitely not complete, there are many minor goodies we didn't even mention here. Enjoy! Bug Fixes Enhancements We would like to thank all the contributors for their valuable feedback and bug reports. Your contributions help us make Mingo better. Please […]
Radoslav Toth

MongoDB Atlas vs. self-hosted MongoDB quick guide.

It is plain as day that MongoDB has been a popular database solution for many applications in the recent past. One may argue this is due to its flexibility, scalability, and ease to use. However, Organizations are faced with opting for MongoDB Atlas, a fully managed cloud-based database service, or having MongoDB set up and […]
daviddurika

5 proven MongoDB performance optimization techniques

MongoDB is among the most popular NOSQL databases currently. It’s no secret that developers working on high-performance applications ally with MongoDB. It is a document-based database that is highly scalable and hence handles large amounts of data.  MongoDB can handle data ranging from small data sets to large and complex stacks of information. Whether working […]
daviddurika
1 2 3

Download Mingo now

The best MongoDB GUI Admin. Intuitive • Fast • Secure
Download Now