- Saved searches
- Use saved searches to filter your results more quickly
- License
- mongodb/mongo-java-examples
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- MongoDB Java CRUD Example Tutorial
- MongoDB Java
- MongoDB Java Driver Download
- Creating MongoDB Java Connection
- Connection to MongoDB Database
- MongoDB and Collections
- MongoDB Java Example
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
License
mongodb/mongo-java-examples
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
This repository contains examples that demonstrate usage of MongoDB Java Driver with MongoDB database.
Establish connection over TLS/SSL with MongoDB cluster
Package: org.mongodb.connect.tls
This package contains several examples demonstrating MongoClient configuration and establishment of TLS connectivity between the MongoDB database and MongoDB Java Driver
The code has been tested with:
The following TLS connectivity use cases covered:
- Java Application configured with CA certificate to validate the MongoDB Server’s certificate
- Java Application validating the MongoDB server’s certificate and providing its Client’s certificate to be validated by the MongoDB Server
- As in the previous case of validating and providing certs, but with the additional authentication of the database by using the Client’s X.509 certificate — X509 authentication
Certs from a known Certificate Authority are usually stored in the cacerts file provided with the JRE. The use cases in the following examples assume the CA certificates were issued privately, and were not issued by a known Certificate Authority.
The classes implementing the use cases are separated into two packages:
Classes in the org.mongodb.connect.tls.cert_store demonstrate how to set the location of the certificate files by using the following JVM system properties:
- javax.net.ssl.trustStore — points to the JKS Trust Store file holding the CA certificate
- javax.net.ssl.keyStore — points to the PKCS12 Key Store file holding the Client’s certificate
Classes in the org.mongodb.connect.tls.sslcontext demonstrate implementation of the same use cases, but with the MongoClient object configured to use a custom SSLContext.
MongoDB Java CRUD Example Tutorial
While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.
Welcome to MongoDB Java Example Tutorial. Earlier we learned how to install MongoDB in Unix machines and executed some commands from terminal. Today we will look into the MongoDB Java Driver features and how to perform common CRUD (Create, Read, Update, Delete) operations.
MongoDB Java
- MongoDB Java Driver Download
- Creating MongoDB Java Connection
- Connection to MongoDB Database
- MongoDB and Collections
- MongoDB Java Example
MongoDB Java Driver Download
If you have maven project, just add below dependency to include MongoDB java driver into your application.
org.mongodb mongo-java-driver 2.12.3
Creating MongoDB Java Connection
MongoClient is the interface between our java program and MongoDB server. MongoClient is used to create connection, connect to database, retrieve collection names and create/read/update/delete database, collections, document etc. One of the MongoDB java driver feature I like most is that it’s thread safe, so we can create an instance of MongoClient once and reuse it. Even if multiple thread accesses it simultaneously, a connection is returned from the internal connection pool maintained by it. For every request to the database (find, insert etc) the Java thread will obtain a connection from the pool, execute the operation, and release the connection. This means the connection (socket) used may be different each time. Below are some of the common methods to connect to a MongoDB server.
MongoClient mongoClient = new MongoClient(); //connects to default host and port i.e 127.0.0.1:27017 // or MongoClient mongoClient = new MongoClient( "localhost" ); //connects to default port i.e 27017 // or MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); // should use this always // or, to connect to a replica set, with auto-discovery of the primary MongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017), new ServerAddress("localhost", 27018), new ServerAddress("localhost", 27019)));
Connection to MongoDB Database
Once we get the connection to MongoDB server, next step is to create the connection to the database, as shown below. Note that if database is not present, MongoDB will create it for you.
MongoClient mongo = new MongoClient("localhost", 27017); DB db = mongo.getDB("journaldev");
MongoClient mongo = new MongoClient("localhost", 27017); List dbs = mongo.getDatabaseNames(); System.out.println(dbs); // [journaldev, local, admin]
We can have user-password based authentication for databases, in that case we need to provide authorization credentials like below.
MongoCredential journaldevAuth = MongoCredential.createPlainCredential("pankaj", "journaldev", "pankaj123".toCharArray()); MongoCredential testAuth = MongoCredential.createPlainCredential("pankaj", "test", "pankaj123".toCharArray()); List auths = new ArrayList(); auths.add(journaldevAuth); auths.add(testAuth); ServerAddress serverAddress = new ServerAddress("localhost", 27017); MongoClient mongo = new MongoClient(serverAddress, auths);
If you are using older versions, you need to provide authentication details after getting the database object like below.
MongoClient mongo = new MongoClient("localhost", 27017); DB db = mongo.getDB("journaldev"); boolean auth = db.authenticate("pankaj", "pankaj123".toCharArray());
MongoDB and Collections
Every database can have zero or multiple collections, they are like tables in relational database servers except that you don’t have specific format of data. Think of it like a generic list vs list of Strings in terms of java programming language. We can get all the collections names using below code.
MongoClient mongo = new MongoClient("localhost", 27017); DB db = mongo.getDB("journaldev"); Set collections = db.getCollectionNames(); System.out.println(collections); // [datas, names, system.indexes, users]
DB db = mongo.getDB("journaldev"); DBCollection col = db.getCollection("users");
MongoDB Java Example
Even though we can work on any valid JSON document in MongoDB collection, in real life we have POJO classes that are mapped with these data. So I will create a java bean and use it for my examples. `User.java` ``` package com.journaldev.mongodb.model; public class User < private int id; private String name; private String role; private boolean isEmployee; public int getId() < return id; >public void setId(int id) < this.id = id; >public String getName() < return name; >public void setName(String name) < this.name = name; >public String getRole() < return role; >public void setRole(String role) < this.role = role; >public boolean isEmployee() < return isEmployee; >public void setEmployee(boolean isEmployee) < this.isEmployee = isEmployee; >> ``` Here is the complete MongoDB java example program showing all the CRUD operations one by one. `MongoDBExample.java` ``` package com.journaldev.mongodb.main; import java.net.UnknownHostException; import com.journaldev.mongodb.model.User; import com.mongodb.BasicDBObjectBuilder; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.MongoClient; import com.mongodb.WriteResult; public class MongoDBExample < public static void main(String[] args) throws UnknownHostException < User user = createUser(); DBObject doc = createDBObject(user); MongoClient mongo = new MongoClient("localhost", 27017); DB db = mongo.getDB("journaldev"); DBCollection col = db.getCollection("users"); //create user WriteResult result = col.insert(doc); System.out.println(result.getUpsertedId()); System.out.println(result.getN()); System.out.println(result.isUpdateOfExisting()); System.out.println(result.getLastConcern()); //read example DBObject query = BasicDBObjectBuilder.start().add("_id", user.getId()).get(); DBCursor cursor = col.find(query); while(cursor.hasNext())< System.out.println(cursor.next()); >//update example user.setName("Pankaj Kumar"); doc = createDBObject(user); result = col.update(query, doc); System.out.println(result.getUpsertedId()); System.out.println(result.getN()); System.out.println(result.isUpdateOfExisting()); System.out.println(result.getLastConcern()); //delete example result = col.remove(query); System.out.println(result.getUpsertedId()); System.out.println(result.getN()); System.out.println(result.isUpdateOfExisting()); System.out.println(result.getLastConcern()); //close resources mongo.close(); > private static DBObject createDBObject(User user) < BasicDBObjectBuilder docBuilder = BasicDBObjectBuilder.start(); docBuilder.append("_id", user.getId()); docBuilder.append("name", user.getName()); docBuilder.append("role", user.getRole()); docBuilder.append("isEmployee", user.isEmployee()); return docBuilder.get(); >private static User createUser() < User u = new User(); u.setId(2); u.setName("Pankaj"); u.setEmployee(true); u.setRole("CEO"); return u; >> ``` A sample execution results in following output. ``` null 0 false WriteConcern < "getlasterror" : 1>/ (Continue on error? false) < "_id" : 2 , "name" : "Pankaj" , "role" : "CEO" , "isEmployee" : true>null 1 true WriteConcern < "getlasterror" : 1>/ (Continue on error? false) null 1 false WriteConcern < "getlasterror" : 1>/ (Continue on error? false) ``` Notice that I am saving User id with **\_id** name, this is a reserved key for the primary key of any record in the collection. If we don't provide one, MongoDB will create one for us. It's like sequencer or auto increment column in relational database tables. Since I am deleting the created record, further execution won't cause any issues. But if there are duplicate record, then we will get below errors. ``` Exception in thread "main" com.mongodb.MongoException$DuplicateKey: < "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: journaldev.users.$_id_ dup key: < : 1 >" , "code" : 11000> at com.mongodb.CommandResult.getWriteException(CommandResult.java:88) at com.mongodb.CommandResult.getException(CommandResult.java:79) at com.mongodb.DBCollectionImpl.translateBulkWriteException(DBCollectionImpl.java:314) at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:189) at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:165) at com.mongodb.DBCollection.insert(DBCollection.java:93) at com.mongodb.DBCollection.insert(DBCollection.java:78) at com.mongodb.DBCollection.insert(DBCollection.java:120) at com.journaldev.mongodb.main.MongoDBExample.main(MongoDBExample.java:27) ```
That’s all for getting your started with MongoDB Java Driver, we will look into more features in next posts.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.