Что такое MongoDB?

MongoDB - это документно-ориентированная база данных NoSQL, используемая для хранения больших объемов данных. Вместо использования таблиц и строк, как в традиционных реляционных базах данных, MongoDB использует коллекции и документы. Документы состоят из пар ключ-значение, которые являются базовой единицей данных в MongoDB. Коллекции содержат наборы документов и функций, которые эквивалентны таблицам реляционной базы данных. MongoDB - это база данных, которая появилась на свет примерно в середине 2000-х годов.

Предварительные требования:

Операционная система: версии UBUNTU 16.04 и выше.

Сервер сообщества MongoDB и Компас MongoDB

Компилятор C-кода - вам необходимо установить любой компилятор для c-кода.

Сборка и установка драйвера MongoDB C

Это команды для создания драйвера MongoDB C.

export SOURCE_ROOT=/<source_root>/
sudo apt-get update
sudo apt-get install -y cmake gcc libsasl2-dev libssl-dev make pkg-config tar wget
cd $SOURCE_ROOT
wget https://github.com/mongodb/mongo-c-driver/releases/download/1.16.2/mongo-c-driver-1.16.2.tar.gz
tar -xzf mongo-c-driver-1.16.2.tar.gz
cd mongo-c-driver-1.16.2
mkdir cmake-build
cd cmake-build
cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
make
sudo make install

Установить переменные среды:

export LD_LIBRARY_PATH=/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

Приведенный ниже пример используется для выполнения базового теста, чтобы убедиться, что драйвер MongoDB C работает должным образом, сохраните приведенный ниже пример в папке как insert.c

insert.c

#include<mongoc.h>
#include<bson.h>
#include<stdio.h>
int main()
{
mongoc_client_t *client;
mongoc_collection_t *collection;
mongoc_cursor_t *cursor;
bson_error_t error;
bson_t *doc;
mongoc_init();
client = mongoc_client_new("mongodb://localhost:27017");
collection = mongoc_client_get_collection(client,"mydb","students");
doc=bson_new();
BSON_APPEND_UTF8(doc,"_id","1098");
BSON_APPEND_UTF8(doc,"firstName","SIDDHANT");
BSON_APPEND_UTF8(doc,"lastName","JOHARI");
if(!mongoc_collection_insert_one(collection,doc,NULL,NULL,&error)) printf("%s\n",error.message);
bson_destroy(doc);
mongoc_collection_destroy(collection);
mongoc_client_destroy(client);
mongoc_cleanup();
printf("Done");
return 0;
}

Я объясню этот пример в несколько этапов.

Шаг 1. Подключение к серверу совместной работы MongoDB.

На первом этапе мы должны установить соединение с Сервером совместной работы MongoDB.

mongoc_client_t *client=mongoc_client_new("mongodb://localhost:27017");

Шаг 2. Доступ / создание коллекции.

В MongoDB, если база данных / коллекция уже существует, в противном случае возвращается ссылка на базу данных. Он автоматически создаст новую базу данных / коллекцию, а затем вернет ссылку на новую.

mongoc_collection_t *collection = mongoc_client_get_collection(client,"mydb","students");

Шаг 3. Создание документа.

Здесь документ относится к структуре, которая содержит всю информацию о данных для вставки.

bson_t *doc=bson_new();
BSON_APPEND_UTF8(doc,"_id","1098");
BSON_APPEND_UTF8(doc,"firstName","SIDDHANT");
BSON_APPEND_UTF8(doc,"lastName","JOHARI");

Шаг 4. Добавление документа в коллекцию.

После создания документа мы вставим его в коллекцию с помощью метода mongoc_collection_insert_one.

if(!mongoc_collection_insert_one(collection,doc,NULL,NULL,&error))
{
printf("%s\n",error.message);
}

Шаг 5. Освобождение памяти для всех ссылок.

bson_destroy(doc);
mongoc_collection_destroy(collection);
mongoc_client_destroy(client);
mongoc_cleanup();

Скомпилируйте и выполните:

gcc insert.c $(pkg-config --libs --cflags libmongoc-1.0) -o insert.exe
./insert.exe

Выход:

Done

Если вы выполнили все правильно, то теперь у вас все готово для выполнения других операций, таких как удаление, обновление.

update.c

#include<mongoc.h>
#include<bson.h>
#include<stdio.h>
int main()
{
mongoc_client_t *client;
mongoc_collection_t *collection;
mongoc_cursor_t *cursor;
bson_error_t error;
bson_t *doc, *query;
mongoc_init();
client = mongoc_client_new("mongodb://localhost:27017");
collection = mongoc_client_get_collection(client,"mydb","students");
query=bson_new();
BSON_APPEND_UTF8(query,"_id","1098");
doc = BCON_NEW ("$set", "{", "_id",BCON_UTF8("1098"), "firstName",BCON_UTF8("Elon"),"lastName",BCON_UTF8("Musk"), "}");
if(!mongoc_collection_update_one(collection,query,doc,NULL,NULL,&error)) printf("%s\n",error.message);
bson_destroy(query);
bson_destroy(doc);
mongoc_collection_destroy(collection);
mongoc_client_destroy(client);
mongoc_cleanup();
printf("Done");
return 0;
}

В этом примере мы обновляем имя и фамилию документа с идентификатором «1098».

В этом примере мы будем следовать шагам 1, 2 и 5 начиная с вставки.

Шаг 3. Создание документа.

Теперь создадим два документа: один для поиска предыдущих данных, а другой - для замены старого.

bson_t *query=bson_new();
BSON_APPEND_UTF8(query,"_id","1098");
bson_t *doc = BCON_NEW ("$set", "{", "_id",BCON_UTF8("1098"), "firstName",BCON_UTF8("Elon"),"lastName",BCON_UTF8("Musk"), "}");

Шаг 4. Обновление документа в коллекции.

Теперь, после создания как запроса документов, так и документа, мы обновим коллекцию с помощью метода mongoc_collection_update_one.

if(!mongoc_collection_update_one(collection,query,doc,NULL,NULL,&error)) printf("%s\n",error.message);

delete.c

#include<mongoc.h>
#include<bson.h>
#include<stdio.h>
int main()
{
mongoc_client_t *client;
mongoc_collection_t *collection;
mongoc_cursor_t *cursor;
bson_error_t error;
bson_t *query;
mongoc_init();
client = mongoc_client_new("mongodb://localhost:27017");
collection = mongoc_client_get_collection(client,"mydb","students");
query=bson_new();
BSON_APPEND_UTF8(query,"_id","1098");
if(!mongoc_collection_delete_one(collection,query,NULL,NULL,&error)) printf("%s\n",error.message);
bson_destroy(query);
mongoc_collection_destroy(collection);
mongoc_client_destroy(client);
mongoc_cleanup();
printf("Done");
return 0;
}

В этом примере мы удаляем документ с идентификатором «1098».

Для этого мы будем следовать шагам 1, 2 и 5 как пример вставки.

Шаг 3. Создание документа запроса.

В этом примере мы создадим документ запроса, который относится к данным, которые будут удалены из коллекции.

bson_t *query=bson_new();
BSON_APPEND_UTF8(query,"_id","1098");

Шаг 4. Удаление документа из коллекции.

Теперь, после создания документа запроса, мы удалим его из коллекции с помощью метода mongoc_collection_delete_one.

if(!mongoc_collection_delete_one(collection,query,NULL,NULL,&error)) printf("%s\n",error.message);

Заключение:

В этом блоге мы узнали о том, как выполнять операции CRUD в MongoDB с использованием C.

Спасибо,

Сиддхант Джохари