Over a million developers have joined DZone.

How to Translate SQL Queries to MongoDB

· Java Zone

What every Java engineer should know about microservices: Reactive Microservices Architecture.  Brought to you in partnership with Lightbend.

We've heard plenty of reasons one might transition from a relational database to a NoSQL solution like MongoDB, but there can be a learning curve. Developers looking to switch over to (or just do some side work with) MongoDB might be interested in Max Seiden's tips on how to translate SQL queries to MongoDB. In Seiden's case, MongoDB is a "log analytics engine" running alongside PostgreSQL, but his use case has still produced a number of useful techniques.

Specifically, Seiden runs through an assortment of SQL needs and demonstrates their usage in MongoDB. For each, he also gives a brief explanation of what's interesting about the translation and about the queries themselves. For example, he looks at the following topics:

  • Counts & Distincts
  • Counts with Predicates
  • Projections with Predicates
  • Group by remote IP with URLs and Predicates
  • Group by remote IP with Distinct URLs and Predicates

And Seiden even gathered some useful, real-world insights with this set-up. He was able to discover "petty attacks" on his website using a modified version of one of his "distinct" queries, for example.

There are, of course, drawbacks and caveats, but overall, Seiden's SQL-to-MongoDB examples provide a fantastic look at how the two database options relate to each other. Read the full article to see how it's all done.

Microservices for Java, explained. Revitalize your legacy systems (and your career) with Reactive Microservices Architecture, a free O'Reilly book. Brought to you in partnership with Lightbend.


Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}