MongoDB Search by ID Example
1. Introduction
This is an in-depth article on how to search by ID in the MongoDB. MongoDB is an open-source NoSQL database. Mongo Database is based in C++ language. In this article, we discuss the MongoDB concepts related to querying by Id in a scalable and performance-oriented Mongo database.
2. MongoDB Search by ID
2.1 Prerequisites
MongoDB needs to be installed for the MongoDB Search by ID example.
2.2 Download
You can download the Mongo DB from the Mongo Database website for linux, windows or macOS version.
2.3 Setup
On MacOS, you need to tap the formula repository of MongoDB. This repo needs to be added to the formula list. The command below adds the formula repository of MongoDB to the formula list:
Brew Tap
brew tap mongodb/brew
After setting the formula list, you can install the Mongo DB with the following command :
Brew Tap
brew install mongodb-community@4.0
2.4 MongoDB CommandLine
After installation, you can run MongoDB on the command line. To run mongoDB on the command line, the following command can be used:
Mongod CommandLine
mongod --config /usr/local/etc/mongod.conf
The output of the executed command is shown below.
2.5 Mongo Shell
After starting the Mongod process, Mongo Shell can be invoked on the command line. Mongo shell can be run using the command below:
Mongod Shell
mongo
The output of the executed command is shown below.
2.6 Find By Id
2.6.1 Create Database
You can use database_name to create a database. This command will create a new database. If the database exists, it will start using the existing database. The command below is used to create “insights” database:
Create Database
use insights
The output of the executed command is shown below.
The output does not show insights in the database. This is because insights does not have any collection.
2.6.2 Create Collection
You can use createCollection
command to create a set of documents. The created collection is used to create a document. The command below is used to create “persons” collection:
Create Database
db.createCollection("persons")
The output of the executed command is shown below.
The output now shows the database insights in the list of databases.
2.6.3 Create a Document
You can use the insertOne
method to create a document which is stored in the collection. A new collection will be created if the collection does not exist in the database. The document will be inserted into the collection after it is created. In the command, if _id parameter is not specified, then a unique ObjectId is assigned for the document.
The command below is used to create a person document:
Create Person
db.persons.insertOne( { person: "paul smith", id: 002, ssn: 324675431,gender: "male" } ) db.persons.find().pretty()
The output of the executed command is shown below.
The find()
method on the collection persons is invoked to find the documents in the collection. pretty()
method prints the documents in a formatted way.
2.6.4 Find
In the above output, the person document has the _id equal to objectId 5cd68b56e5d2567eb32b841b. You can use find
method to search by _id using the command below:
Find by _id
db.persons.find( { "_id": ObjectId("5cd68b56e5d2567eb32b841b") } )
The output of the executed command is shown below.
2.6.5 Find – Query Operators
You can find multiple documents by _id using find
method and query operators. The command used is shown below:
Find by Query Operators
db.persons.insertOne( { person: "will smith", id: 004, ssn: 624675431,gender: "male" } ) db.persons.find( { "_id": { $in:[ObjectId("5cd68b56e5d2567eb32b841b"),ObjectId("5cd69f69e5d2567eb32b841d")] } }).pretty()
The output of the executed command is shown below.
2.6.6 Find- Range Operators
You can find multiple documents by _id using find
method and range operators $lt and $gt. The command used is shown below:
Find by Range Operators
db.persons.insertOne( { person: "Richard More", _id: 1, ssn: 224675431,gender: "male" } ) db.persons.find( { "_id": { $lt:3,$gt:0} } ).pretty()
The output of the executed command is shown below.
2.6.6 FindOne
You can find by _id using findOne()
method on the collection. The command used is shown below:
FindOne by _id
db.persons.find( { "_id": ObjectId("5cd68b56e5d2567eb32b841b") } )
The output of the executed command is shown below.
2.6.7 FindAndModify
You can use findAndModify
method to update the document after finding the document by _id. The command used is shown below:
FindAndModify method
db.persons.insertOne( { person: "brad smith", id: 003, ssn: 454675431,gender: "male" } ) db.persons.findAndModify({ query: { "_id": ObjectId("5cd694ace5d2567eb32b841c") }, sort: { "id": 1 }, update: { $inc: { "ssn": 1 } }, upsert: true })
The output of the executed command is shown below.
2.6.8 FindOneAndDelete
You can use findOneAndDelete
method to find the document by _id and delete it. The command used is shown below:
FindOneAndDelete Method
db.persons.findOneAndDelete( { "_id": ObjectId("5cd694ace5d2567eb32b841c") } )
The output of the executed command is shown below.
2.6.9 FindOneAndReplace
You can use findOneAndReplace
method to find the document by _id and replace it. The command used is shown below:
FindOneAndReplace Method
db.persons.findOneAndReplace( { "_id": ObjectId("5cd68b56e5d2567eb32b841b") }, { "ssn": 323455678 } ) db.persons.find().pretty()
The output of the executed command is shown below.
2.6.10 FindOneAndUpdate
You can use findOneAndUpdate
method to find the document by _id and update it. The command used is shown below:
FindOneAndReplace Method
db.persons.findOneAndUpdate( { "_id": ObjectId("5cd68b56e5d2567eb32b841b") }, { $inc: { "ssn" : 7 } } ) db.persons.find().pretty()
The output of the executed command is shown below.
2.7 Best Practices
Best practices of MongoDB Operations can be obtained from this link. The best practices of MongoDB performance can be accessed from the MongoDB website.
2.8 Error Handling
Programming with Java using MongoDB is available on java code geeks at this link. MongoException is the main parent exception class in MongoDB. MongoException.CursorNotFound is the exception related to Cursor not found. Timed out error can happen if the time out is not appropriately configured. The default for time out for finding the cursor is 10 minutes. MongoException.Network exception is related to error in network. You can set the networking configuration for retry, number of retries and time to wait for a retry.
3. Download the Source Code
You can download the full source code of this example here: MongoDB Search by ID Example