Greifen Sie auf MongoDB in C zu

Überblick

Verwendung des C-Treibers des MongoDB-Beamten Ich habe ein Beispiel für den Zugriff auf MongoDB erstellt, daher möchte ich die Quelle und die Prozedur teilen.

Umgebung

Angenommen, CentOS.

Mongo-Repository hinzugefügt. Erstellen Sie eine neue 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  #Mongodb Installation
#Installation des Mongodb-Treibers
yum install -y make git gcc automake autoconf libtool pkg-config openssl-devel cyrus-sasl-devel wget tar  #Was Sie brauchen, um Treiber zu installieren

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

Datenbankeinstellungen

Ich werde die Daten für den Test eingeben.

service mongod start     #Starten Sie den Mongodb-Server
mongo                    #Mongodb Server Verbindung
use db_test              #DB-Erstellung
#Sammlungserstellung, Dokumenteingabe
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

Zugriff auf 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;
  //DB-Verbindung
  conn = mongoc_client_new (
             "mongodb://localhost:27017/"  //Verbindungsziel-URI
         );
  if( NULL == conn ){
    // error
    exit(-1);
  }
  //Datenerfassung
  coll = mongoc_client_get_collection (
           conn   ,    //Verbindung
           "db_test" , //DB-Name
           "cl_test"   //Sammlungsname
         );
  if( NULL == coll ){
    // error
    mongoc_client_destroy ( conn );
    exit(-1);
  }
  bson_init (&query);
  cusr = mongoc_collection_find (
           coll              , //Sammlung
           MONGOC_QUERY_NONE , // mongoc_query_flags_t(Geben Sie keine Suchbedingungen an)
           0                 , //Startposition(Holen Sie sich von Anfang an)
           0                 , //Maximale Anzahl von Akquisitionen(Nimm alle)
           0                 , //Chargengröße(Standardspezifikation(=100) )
           &query            , //Abfrage(nicht spezifiziert)
           NULL              , //Feld(Für alle)
           NULL                //Cluster erfassen(Standardspezifikation(=Holen Sie sich von der Grundschule))
         );
  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 );
  }
  //Aufräumen
  mongoc_collection_destroy( coll );
  mongoc_client_destroy ( conn );
  bson_destroy (&query);
  return 0;
}

Kompilieren und ausführen

Ich konnte die Bibliothek nicht so finden, wie sie war Erstellen Sie mongo.conf, registrieren Sie es und führen Sie es dann aus.

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


/usr/local/lib
ldconfig #Einstellungen widerspiegeln
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" }

Es scheint, dass Sie JSON in C analysieren müssen.

Recommended Posts

Greifen Sie auf MongoDB in C zu
Mongodb Zugang mit Pymongo
Weiter Python in C-Sprache
C-API in Python 3
Erweitern Sie Python in C ++ (Boost.NumPy)
Einbettung der Maschinensprache in die Sprache C.
Heap-Sortierung in C-Sprache
Verwenden Sie reguläre Ausdrücke in C.
Nachahmung von Pythons Numpy in C #
Binäre Suche in Python / C ++
Absteigende Sorte mit Mongodb in Python
Minimaler Gesamtflächenbaum in C #
Greifen Sie auf das Feld C-Struktur mit dem in Go reservierten Namen zu.
Schreiben Sie einen tabellengesteuerten Test in C.
Modultest mit mehreren Instanzen in C-Sprache
Realisieren Sie die Schnittstellenklasse in der Sprache C.
ABC166 in Python A ~ C Problem
Versuchen Sie den Zugriff auf das SPS-Register in Python
Versuchen Sie, Daten in MongoDB abzulegen
Beim Lesen der C ++ - Struktur mit Cython
Löse ABC036 A ~ C mit Python
So verpacken Sie C in Python
So erstellen Sie den MongoDB C-Sprachtreiber
Löse ABC037 A ~ C mit Python
Greifen Sie mit Python auf die Twitter-API zu
Segfo mit 16 Zeichen in C-Sprache
Schreiben Sie einen C-Sprach-Unit-Test in Python
Linkliste (list_head / queue) in C-Sprache
Löse ABC175 A, B, C mit Python
Algorithmus in Python (ABC 146 C Dichotomie
Wiederbelebt von "kein Internetzugang" in Python
Implementieren Sie einen Teil des Prozesses in C ++
Implementieren Sie den FIR-Filter in Python und C.
Verwendung von Google Test in C-Sprache
Schreiben Sie die O_SYNC-Datei in C und Python
Exklusiver Dateizugriff zwischen Prozessen in Python
Schriftliche Auswahlsortierung in C.
MongoDB mit Python zum ersten Mal
[AWS] Wechseln Sie die Zugriffsrechte in der boto3-Sitzung
Generieren Sie mit Python eine C-Sprache aus dem S-Ausdruck
Verwenden Sie libxlsxwriter, um xlsx-Dateien in C ++ zu exportieren.
Greifen Sie über Cognito in Python auf S3-Ressourcen zu
Führen Sie Python in C ++ unter Visual Studio 2017 aus
Kommunizieren Sie mit I2C-Geräten unter Linux C.