Accéder à MongoDB en C

Aperçu

Utilisation du pilote C du fonctionnaire MongoDB J'ai créé un échantillon pour accéder à MongoDB, je voudrais donc partager la source et la procédure.

Environnement

En supposant CentOS.

Ajout du référentiel Mongo. Créez un nouveau mongodb.repo.

diff:/etc/yum.repos.d/mongodb.repo


[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

centos7


yum update -y
yum install -y mongodb-org  #installation de mongodb
#installation du pilote mongodb
yum install -y make git gcc automake autoconf libtool pkg-config openssl-devel cyrus-sasl-devel wget tar  #Ce dont vous avez besoin pour installer le pilote

wget https://github.com/mongodb/mongo-c-driver/releases/download/1.9.5/mongo-c-driver-1.9.5.tar.gz
tar xzf mongo-c-driver-1.9.5.tar.gz 
cd mongo-c-driver-1.9.5
./configure
sudo make
sudo make install

Paramètres de la base de données

Je vais mettre les données pour le test.

service mongod start     #démarrer le serveur mongodb
mongo                    #connexion au serveur mongodb
use db_test              #Création de DB
#Création de collection, saisie de documents
db.cl_test.insert({id:1, name:'aaa'});
db.cl_test.insert({id:2, name:'bbb'});
db.cl_test.insert({id:3, name:'ccc'});
exit

Accès à MongoDB

mongo.c


#include <bson.h>
#include <bcon.h>
#include <mongoc.h>
#include <stdio.h>
#include <stdlib.h>

int main( void ){
  mongoc_client_t *     conn    = NULL;
  mongoc_collection_t * coll    = NULL;
  mongoc_cursor_t *     cusr    = NULL;
  const bson_t *        doc     = NULL;
  char *                ret_str = NULL;
  bson_t                query;
  //Connexion DB
  conn = mongoc_client_new (
             "mongodb://localhost:27017/"  //URI de destination de la connexion
         );
  if( NULL == conn ){
    // error
    exit(-1);
  }
  //L'acquisition des données
  coll = mongoc_client_get_collection (
           conn   ,    //lien
           "db_test" , //Nom de la base de données
           "cl_test"   //Nom de la collection
         );
  if( NULL == coll ){
    // error
    mongoc_client_destroy ( conn );
    exit(-1);
  }
  bson_init (&query);
  cusr = mongoc_collection_find (
           coll              , //collection
           MONGOC_QUERY_NONE , // mongoc_query_flags_t(Ne spécifiez aucune condition de recherche)
           0                 , //Position de départ(Obtenez depuis le début)
           0                 , //Nombre maximum d'acquisitions(Avoir tout)
           0                 , //taille du lot(spécification par défaut(=100) )
           &query            , //Requete(non spécifié)
           NULL              , //champ(Pour tous)
           NULL                //Capturer le cluster(spécification par défaut(=Obtenir du primaire))
         );
  if( NULL == cusr ){
    // error
    mongoc_client_destroy ( conn );
    bson_destroy (&query);
    exit(-1);
  }
  while (mongoc_cursor_next ( cusr , &doc ) ) {
    ret_str = bson_as_json ( doc , NULL );
    printf ( "%s\n", ret_str );
    bson_free ( ret_str );
  }
  //Nettoyer
  mongoc_collection_destroy( coll );
  mongoc_client_destroy ( conn );
  bson_destroy (&query);
  return 0;
}

Compiler et exécuter

Je n'ai pas pu trouver la bibliothèque telle qu'elle était Créez mongo.conf, enregistrez-le, puis exécutez-le.

diff:/etc/ld.so.conf.d/mongo.conf


/usr/local/lib
ldconfig #Refléter les paramètres
gcc -Wall -o mongo mongo.c -lmongoc-1.0 -lbson-1.0 -L/usr/local/lib -I/usr/local/include/libmongoc-1.0/ -I/usr/local/include/libbson-1.0/
./mongo
{ "_id" : { "$oid" : "54bfc04676613f50e453d617" }, "id" : 1.000000, "name" : "aaa" }
{ "_id" : { "$oid" : "54bfc04676613f50e453d618" }, "id" : 2.000000, "name" : "bbb" }
{ "_id" : { "$oid" : "54bfc04976613f50e453d619" }, "id" : 3.000000, "name" : "ccc" }

Il semble que vous deviez analyser JSON en C.

Recommended Posts

Accéder à MongoDB en C
accès mongodb avec pymongo
Next Python en langage C
API C en Python 3
Étendre python en C ++ (Boost.NumPy)
Intégration du langage machine en langage C
Tri de tas fait en langage C
Utiliser des expressions régulières en C
Utilisez l'ODM de MongoDB avec Python
Imiter Numpy de Python en C #
Recherche binaire en Python / C ++
Tri décroissant avec mongodb en python
Arborescence de surface totale minimale en C #
Accédez au champ de structure C avec le nom réservé dans Go.
Ecrire un test piloté par table en C
Test de module multi-instance en langage C
Réaliser une classe d'interface en langage C
ABC166 en Python A ~ C problème
Essayez l'accès au registre PLC en Python
Essayez de mettre des données dans MongoDB
Lors de la lecture d'une structure C ++ avec Cython
Résoudre ABC036 A ~ C avec Python
Comment envelopper C en Python
Comment créer un pilote de langage MongoDB C
Résoudre ABC037 A ~ C avec Python
Accéder à l'API Twitter avec Python
Segfo avec 16 caractères en langage C
Ecrire un test unitaire de langage C en Python
Liste de liens (list_head / queue) en langage C
Résoudre ABC175 A, B, C avec Python
Algorithme en Python (ABC 146 C Dichotomy
Relancé de "pas d'accès Internet" en Python
Implémenter une partie du processus en C ++
Implémenter le filtre FIR en langage Python et C
Comment utiliser Google Test en langage C
Ecrire le fichier O_SYNC en C et Python
Accès exclusif aux fichiers entre les processus en Python
Tri sélect écrit en C
MongoDB avec Python pour la première fois
[AWS] Changer les droits d'accès dans la session boto3
Générer un langage C à partir d'une expression S avec Python
Utilisez libxlsxwriter pour exporter des fichiers xlsx en C ++.
Accéder aux ressources S3 via Cognito en Python
Exécutez Python en C ++ sur Visual Studio 2017
Communiquez avec les périphériques I2C sous Linux C