Что такое 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.
Спасибо,
Сиддхант Джохари