In this tutorial, we'll cover why the Kotlin programming language and MongoDB work well together. We'll provide some examples on getting started with this new programming language, using data classes and coroutines, and more.
Kotlin is a modern cross-platform, statically typed programming language that addresses some common issues in Java while also being fully interoperable with Java and compatible with the JVM, or the Java Virtual Machine. As a programming language, Kotlin has several advantages over Java, including built-in null safety, data classes, and coroutines.
Though one of the primary use cases of Kotlin is mobile development for Android apps, there is a growing community of Kotlin users who are using the language for server-side development as well.
MongoDB holds the top spot as the most popular NoSQL database technology on several lists. It is a document database used to build highly available and scalable internet applications. Founded in 2007, MongoDB has a worldwide following in the developer community. MongoDB has always focused on providing developers with an excellent user experience, which, in addition to all its other features, has made MongoDB a favorite of developers worldwide.
If you're building something new and need a database, consider using MongoDB Atlas from the outset. Atlas will give you a fully-managed, cloud-native database service that comes with a number of features, including full-text search, charts, partner integrations, and much more. If you're building an iOS or an Android app, Atlas Device Sync makes mobile synchronization a snap. You can even build web applications on GraphQL directly on top of MongoDB Atlas.
MongoDB is a great fit for both mobile and server-side development using Kotlin. For mobile app development, MongoDB has the Realm Kotlin SDK to develop iOS or Android apps or Kotlin Multiplatform Mobile (KMM).
For server-side, MongoDB has an official server-side Kotlin driver that was made generally available in June 2023. The MongoDB Kotlin driver provides a complete library for building Kotlin applications in an idiomatic way, including first class support for synchronous development and asynchronous programming with Kotlin coroutines and the Kotlinx.serialization library.
If you don't already have an Atlas account, sign up now! You can create a free-tier MongoDB cluster, create a database collection, load sample datasets, and interact with the data by following our guide. MongoDB Atlas saves time by making it easier to manage database infrastructure. It also has a perpetual free tier for small database and offers reasonable consumption-based pricing for more advanced configurations. No need to have MongoDB installed locally.
To use the MongoDB Kotlin Driver for server-side, you'll need to have Kotlin installed. You'll also need to create a MongoDB cluster to store and manage the data that you'll be using in your application. Complete the Get Started with Atlas guide to set up a new Atlas account, create and launch a free tier MongoDB cluster, load sample datasets, and interact with the data.
After completing the steps in the Atlas guide, you should have a new MongoDB cluster deployed in Atlas, a new database user, and sample datasets loaded into your cluster.
The MongoDB Kotlin driver uses a connection string to connect to your MongoDB cluster. This string includes information on the hostname or IP address and port of your cluster, authentication mechanism, user credentials when applicable, and other connection options.
To retrieve your connection string for use with the Kotlin driver, navigate to the Database section of your Atlas account and click Connect for the cluster that you want to connect to. You'll be prompted to select your driver and version, and you'll then be able to copy your connection string. Remember to substitute in your own username and password in the string!
To easily configure Gradle or Maven to build and run your project, we recommend you use an IDE like IntelliJ IDEA or Eclipse. You'll want to add MongoDB as a dependency. You can find more instructions on how to add a dependency on the MongoDB Kotlin driver here.
You should already have a sample dataset loaded into your MongoDB cluster from an earlier step (see: Getting Started with MongoDB Atlas for further instructions) and easy access to your connection string.
To query your MongoDB cluster from your application, you'll need to create a data class that represents a MongoDB document and to write a main function that includes information on your cluster's URI. A full tutorial and sample code can be found here.
CRUD (Create, Read, Update, Delete) operations enable you to work with data stored in MongoDB. You can consider these operations in two categories: Read and Write.
Read operations find and return documents stored in your database. Some examples of read operations are:
Retrieving document(s) using find()
Monitoring changes to your database in real-time using change streams
Searching geospatial data with GeoJSON
Searching on text in a specified field
Write operations allow you to make changes to the information stored in your database. Some examples of write operations are:
Inserting a document using insertOne() or insertMany()
Deleting a document with a query filter using deleteOne() or deleteMany()
Changing a document with updateOne() or updateMany()
To reduce the number of calls to the database, you can also use bulk operations. To learn more about bulk operations, consult the documentation. The documentation also has sample code snippets to help you get started.
True to their name, data classes in Kotlin are classes whose main property is to hold data. The compiler automatically derives several members based on the properties declared in the class's constructor. These members include equals() and hashCode(), toString(), and more.
The Kotlin server-side driver natively supports encoding and decoding Kotlin data classes for MongoDB read and write operations using the default codec registry (a collection of classes that define how to encode and decode both Java and Kotlin types).
You can insert and retrieve a data class, as well as configure the serialization behavior of data classes using the Kotlin driver. You can find more information on data class support in the Kotlin driver here.
To find the server-side Kotlin driver syntax and code snippets for several common MongoDB commands and links to their related reference and API documentation, consult the Quick Reference in the Kotlin driver documentation.
To dive deeper into MongoDB core concepts, check out MongoDB University! It comes with self-paced video lessons, on-demand labs, certifications with digital badges, and more. For Kotlin-specific code examples and written tutorials, try the MongoDB Developer Center.
The best part of using MongoDB is the vibrant developer community that includes users with all levels of experience with the Kotlin server-side driver and Kotlin Realm SDK. The best way to get support for general questions is to use MongoDB Community Forums.
KMongo is an unofficial, community-created driver that was built to address the need for Kotlin server-side support with MongoDB. The official MongoDB server-side driver is similar to KMongo in that both rely on the MongoDB Java driver "under the hood", but only the MongoDB server-side Kotlin driver comes with official support and maintenance.
One of the most popular use cases for Kotlin is Android development. Since 2019, Android mobile development has been Kotlin-first. However, close to half of all Kotlin developers are using the language for server-side. Kotlin is a great fit for server-side applications due to its scalability, interoperability with Java-based frameworks, and its tooling. Kotlin even offers framework-specific tooling in the plugin for IntelliJ IDEA Ultimate.
Java and Kotlin are both powerful programming languages that run on the Java Virtual Machine (JVM), but there are differences between the two.
Kotlin is a new language meant to solve a few problems common in Java, and comes with function types, coroutines, and built-in null safety, as well as a more concise syntax resulting in fewer lines of code. It supports both object oriented programming and functional programming. However, Java is significantly more established and boasts a wider pool of developers who know the language.
The two languages are interoperable, which means that you can call Kotlin code from Java code, and vice-versa.