MongoDB C Examples: 4 Comprehensive Aspects

Roxana Raducanu • Last Modified: December 29th, 2022

We are living and working in a world that’s driven by data. So, if you want to make the most of that data, you will have to choose a database that consistently provides a high–performance data storage solution. However, there are several types of databases to choose from RDBMS, key-value, wide column, document, and more. How do you know which would suit you best?

If we want to achieve performance in terms of data storage and retrieval with accuracy, speed, and reliability, a NoSQL database is the best alternative. This type of database breaks the typical tradition of the data storage structure of the relational database. NoSQL databases were developed as a reaction to an increase in the volume of data that needs to be stored and the frequency in which this data is accessed. MongoDB is one of such NoSQL storages designed to handle the scalability and agility challenges of modern applications.

This article will introduce you to MongoDB and dive deep into its unique features. It will also elaborate on MongoDB C Examples and will list down the steps to install the required setup. The article will also provide suitable examples for the CRUD operations using MongoDB C Driver. Read along to learn the benefits of replicating data with MongoDB!

Table of Contents

What is MongoDB?

MongoDB C Examples: MongoDB Logo
Image Source

MongoDB is an open-source document database made using a horizontal scale-out architecture. It is a NoSQL database used for high-volume data storage. MongoDB is an alternative tool to the conventional relational database tool that can manage document-oriented information, store or retrieve information.

Instead of keeping data in tables of rows or columns like SQL databases, MongoDB uses a collection of documents, each of these documents consisting of key/value attributes. This format of storage is called BSON and applications will retrieve this information in a JSON format. MongoDB is a database that came to light around the mid-2000s. As of 2022, the MongoDB database platform has been downloaded over 210 million times.

Key Features of MongoDB

MongoDB has several extraordinary capabilities that make it widely usable and popular. Let’s take a look at MongoDB’s top technical features:

Supports Adhoc Queries

One of the biggest benefits that make MongoDB stand out is its performance when handling ad hoc queries on data that are usually updated in real-time. MongoDB can perform field searches, range searches, as well as regular expression queries.

Indexing

Indexing is an important feature of a Database for improving search speed and performance of search queries. Without indexing, a database would be forced to scan documents one by one to select those that match the query which would be inefficient. However, if each query has an appropriate index, user requests can be quickly executed by the server. With MongoDB indexing is possible with any field or key, in a document sustaining complex access patterns to datasets.

Schema-Less Database

Classic relational databases use a schema to define every functional element, including tables, rows views, indexes, and relationships. In MongoDB, one collection maintains different documents. It has no schema so there can be numerous documents in a collection, having distinct keys, and these keys might be unique. A schemaless database, like MongoDB, is more flexible as it does not carry these up-front constraints, mapping to a more ‘natural’ database.

To learn more about MongoDB, visit here.

Simplify your Data Analysis with Hevo’s No-code Data Pipeline

Hevo Data, a No-code Data Pipeline helps to load data from any data source such as MongoDB, SaaS applications, Cloud Storage, SDK,s, and Streaming Services and simplifies the ETL process. It supports 100+ data sources and loads the data onto the desired Data Warehouse, enriches the data, and transforms it into an analysis-ready form without writing a single line of code.

Its completely automated pipeline offers data to be delivered in real-time without any loss from source to destination. Its fault-tolerant and scalable architecture ensure that the data is handled in a secure, consistent manner with zero data loss and supports different forms of data. The solutions provided are consistent and work with different Business Intelligence (BI) tools as well.

Get Started with Hevo for Free

Check out why Hevo is the Best:

  • Secure: Hevo has a fault-tolerant architecture that ensures that the data is handled in a secure, consistent manner with zero data loss.
  • Schema Management: Hevo takes away the tedious task of schema management & automatically detects the schema of incoming data and maps it to the destination schema.
  • Minimal Learning: Hevo, with its simple and interactive UI, is extremely simple for new customers to work on and perform operations.
  • Hevo Is Built To Scale: As the number of sources and the volume of your data grows, Hevo scales horizontally, handling millions of records per minute with very little latency.
  • Incremental Data Load: Hevo allows the transfer of data that has been modified in real-time. This ensures efficient utilization of bandwidth on both ends.
  • Live Support: The Hevo team is available round the clock to extend exceptional support to its customers through chat, email, and support calls.
  • Live Monitoring: Hevo allows you to monitor the data flow and check where your data is at a particular point in time.
Sign up here for a 14-Day Free Trial!

Getting Started with MongoDB C Examples

MongoDB C-driver, formerly known as mongo-c, is a project comprising two libraries:

  • libmongoc, a client library that has been written in C for MongoDB.
  • libbson, a library that offers practical routines related to building, parsing, and iterating BSON documents, the native data format of MongoDB.

Now, the following aspects will help you to understand MongoDB C Driver:

MongoDB C Examples: Installation

The MongoDB C Driver has been tested and can be installed on a variety of operating systems and CPU architectures as shown in the table below:

Operating SystemsCPU ArchitecturesCompiler Toolchain
GNU/Linuxx86 and x86_64GCC 4.1 and newer
Solaris 11ARMClang 3.3 and newer
Mac OS X 10.6 and newerPPCMicrosoft Visual Studio 2013 and newer
Windows Vista, 7, and 8SPARCOracle Solaris Studio 12
FreeBSD MinGW 

You can install the required setup using the below steps:

Step 1: Install libmongoc with a Package Manager

Even though MongoDB can be installed manually via a downloaded .tgz tarball,  it is recommended to utilize a package manager to install MongoDB.

There are a couple of Several Linux distributions that offer packages for libmongoc and its dependencies. One of the main benefits of using a package manager when installing libmongoc is that its dependencies (including libbson) will be automatically installed. In addition,  using a package manager will also simplify future upgrade and maintenance tasks. In case you decide to install libmongoc through a distribution package, you should use the package manager to check if the version that is installed is enough for your needs.

Step 2: Install libbson with a Package Manager

The libbson package is available on the most current versions of Debian and Ubuntu. In case you have already installed libmongoc, libbson has already been installed as a dependency. However, you have the option of installing libbson without libmongoc.

Step 3: Build environment

You can setup your environment in one of the following 3 ways:

  • Building environment on Windows: Windows Vista or a newer version and the Visual Studio 2010 tool or newer are required in order to build on Windows.
  • Building environment on Linux: In order to build on Linux you need to ensure that the following prerequisites for libmongoc are met. OpenSSL is needed to authenticate or for TLS connections to MongoDB. Kerberos or LDAP support demands Cyrus SASL.
  • Building on macOS: You will need the XCode Command Line Tools. Make sure that you have the cmake utility as it is also required. 

Step 4: Setting a Connection

Before building libmongoc and/or libbson, you will have to prepare, the build. The steps you will have to take in order to prepare the build will depend on the way you got the source code and the build platform.

It will transparently connects to standalone servers, replica sets, and sharded clusters on demand. If you want to perform operations on a database or collection, you will have to create one of the below structures:

  • a mongoc_database_t 
  • or mongoc_collection_t struct from the mongoc_client_t.

Begin an application, by calling mongoc_init() before performing any other libmongoc functions. When you are done, you need to call the applicable destroy function for every collection, database, or client handle, in reverse order from how they were built. The last step is to call mongoc_cleanup() before exiting.

MongoDB C Examples: Connecting to the MongoDB Server

To interact with MongoDB we will be using the MongoDB shell. In order to perform any CRUD operations in MongoDB, the first step is to open up the MongoDB shell that will enable us to connect to a MongoDB database.

In case of the MongoDB instance you are using runs on a remote server, you will have to SSH into that server from your local machine

ssh john@your_server_ip

Note: Make sure that you are connected as a MongoDB user that has privileges to write and read data.

As soon as you enter the password, the terminal prompt will switch to a greater-than sign (>). This indicates that the shell is now prepared to receive commands for the MongoDB server it has been connected to. Now you can start performing any CRUD operation.

MongoDB C Examples: Basic CRUD Operations 

The acronym CRUD stands for create, read, update and delete, which are the four fundamental functions used to implement persistent storage applications. These 4 operations are utilized to manipulate, read, insert, delete, and edit table data.

The table below recaps what each CRUD function means.

LetterOperationFunction
CCreateInsert
RReadSelect
UUpdateEdit
DDeleteDelete

The following examples of CRUD operations will help you understand them better:

MongoDB C Examples for CRUD: Insert Operations 

The insert/create operations are used to insert or add new documents in the collection. You can create operations by using one of the below methods:

MethodDescription
db.collection.insertOne()This operation is used when we need to insert a single document in the collection.
db.collection.insertMany()This operation is used when we need to insert multiple documents in the collection.
MongoDB C Examples: MongoDB Data Insert Operation
Image Source: Self

The below example adds a new document to the inventory collection. If there is  no _id field specified, MongoDB  will automatically add the _id field with an ObjectId value to the new document. 

db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)

MongoDB C Examples for CRUD: Read Operations

The Read operation is used to query a document in the database. To retrieve the inserted document, you need to run the below command. The find() command will select all the documents from the specified collection.

db.collection.find()

You will be able to define query filters or criteria that pinpoint the documents to be returned.

MongoDB C Examples: MongoDB Data Update Operation
Image Source: Self

Below you will find an example of a query operation using the db.collection.find() approach in the mongo shell. The below illustrations use the inventory collection. To populate the inventory collection, you will have to run the following code

db.inventory.insertMany([
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

MongoDB C Examples for CRUD: Update Operations

Update operations change the documents available in a collection. MongoDB offers 3 methods that you can use to update either a single document or multiple documents at once:

MethodDescription
db.collection.updateOne()Updates a single field in the document where the provided criteria or filter meets the condition. Updating a field will not delete the existing one, but will create a new field that will be added to the document.
db.collection.updateMany()This command will update all fields in the document where the provided criteria or filter matches the condition.
db.collection.replaceOne()This command replaces the whole document. It will replace the old fields and values with new ones.

MongoDB C Examples for CRUD: Update Single Documents

In the below example the db.collection.updateOne() operation is used on the inventory collection to update the first document where item field is “paper”

db.inventory.insertMany([
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

The update operation has made use of the $set operator in order to change the value of the size.uom field to “cm” and the value of the status field to “P”,

In addition, the update operation has used the $currentDate operator to update the value of the lastModified field to the current date. In case there is no lastModified field, $currentDate will create the field. 

MongoDB C Examples for CRUD: Update Multiple Documents

The example below will be using the db.collection.updateMany() method on the inventory collection to update all documents that a qty below 50:

db.inventory.updateMany(
   { "qty": { $lt: 50 } },
   {
     $set: { "size.uom": "in", status: "P" },
     $currentDate: { lastModified: true }
   }
)

MongoDB C Examples for CRUD: Delete Operations

The delete operation completely removes the documents from a collection. There are three methods to delete documents from a collection:

MethodDescription
db.collection.deleteOne()Deletes just one document from the collection that meets the given criteria
db.collection.deleteMany()Deletes multiple document from the collection that meet the given criteria
db.collection.remove()Deletes one or multiple documents that meet the given criteria

Below is an example of the delete operation:

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "P" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" },
] );

Benefits of MongoDB Replication

When it comes to redundancy, MongoDB uses replication. Data Replication is the process of storing data in more than one node and keeping everything synchronized. Data Replication is helpful to boost availability and read performance among other benefits which are as follows:

Sharding

The notion of database sharding is essential to scaling, This architecture pattern refers to slicing up a database into two or smaller chunks, named logical shards, so a single dataset can be stored in various data nodes, referred to as physical shards, increasing the system’s total storage capacity. 

Sharding in MongoDB allows for increased horizontal scalability. With this strategy, instead of going up with the instance size, we stay at the same level, and we expand horizontally by appending more instances/nodes that function as separate databases. The collection of distributed server shards forms a single, extensive database that is better suited to handle the needs of an increased workload.

Load Balancing

Optimal load balancing is one of the most important features for any large-scale database management. Distributing millions of client requests to hundreds or even thousands of servers can lead to a perceptible difference in terms of performance.

As MongoDB has horizontal scaling capabilities such as replication and sharding, it can support large-scale load balancing. The system is able to sustain numerous concurrent read and write requests for the same data with great concurrency control and locking protocols that guarantee data consistency

Fully Scalable

MongoDB’s horizontal, scale-out architecture is capable of managing huge volumes of data and traffic.

Conclusion

This article introduced you to MongoDB and discussed its key features. It also listed down the steps to setup MongoDB C Drive and explained the various MongoDB C Examples of CRUD operations. Furthermore, the article listed down the benefits of performing Data Replication with MongoDB.

As you can see, MongoDB is a great option for a wide range of use cases. MongoDB is a strong database with remarkable capabilities which stand out in-built functions. At the moment, there are numerous organizations from various industries that manage their data flow using MongoDB. Multi-national companies like Bosch, Uber, Accenture, Barclays, just to name a few, leverage MongoDB’s capabilities for storing uncategorized data in a sophisticated way.

Visit our Website to Explore Hevo

Now, to run SQL queries or perform Data Analytics on your MongoDB data, you first need to export this data to a Data Warehouse. This will require you to custom code complex scripts to develop the ETL processes. Hevo Data can automate your data transfer process, hence allowing you to focus on other aspects of your business like Analytics, Customer Management, etc. This platform allows you to transfer data from 100+ multiple sources like MongoDB to Cloud-based Data Warehouses like Amazon Redshift, Snowflake, Google BigQuery, etc. It will provide you with a hassle-free experience and make your work life much easier.

Want to take Hevo for a spin? Sign Up for a 14-day free trial and experience the feature-rich Hevo suite first hand.

Share your understanding of the process of MongoDB c Examples in the comments below!

No Code Data Pipeline For Your Data Warehouse