기본 콘텐츠로 건너뛰기

라벨이 mongodb c driver인 게시물 표시

MongoDB C driver 사용법 6 - REMOVE

mongoc_collection_delete() 이것도 있는것 같지만 이놈은 Deprecated 됐습니다! mongoc_collection_remove() 이놈을 사용해주세요! 그럼 remove는 예제소스로 간결하게 지나가 보겠습니다! #include <bson.h> #include <mongoc.h> #include <stdio.h> #define SERVER "mongodb://localhost:27017/" #define DATABASE "MY_MONGO" #define COLLECTION "MY_MONGO_COLLECTION" int main (int argc, char *argv[]) { mongoc_client_t *client; mongoc_collection_t *collection; bson_error_t error; bson_t *doc; // mongoDB C driver 초기화 + DB 클라이언트 생성 mongoc_init (); client = mongoc_client_new (SERVER); mongoc_client_set_appname (client, "find_example"); // 컬랙션에 접근할 객체 생성 collection = mongoc_client_get_collection (client, DATABASE, COLLECTION); // 지울 대상을 찾을 조건 데이터 작성 doc = bson_new (); BSON_APPEND_UTF8 (doc, "uid", "user4"); if (!mongoc_collection_remove (collection, MONGOC_REMOVE_SINGLE_REMOVE, doc, NULL...

MongoDB C driver 사용법 5-2 - FIND (SELECT)

"MongoDB C driver 사용법 5-1 - FIND (SELECT)"에서 기본적인 select만 했다면 내가 원하는 필드만 찾고, 정렬도 하고, 최대 탐색수도 설정할수있도록 옵션을 지정해보겠습니다. 예제소스 고고 #include <bson.h> #include <mongoc.h> #include <stdio.h> #define SERVER "mongodb://localhost:27017/" #define DATABASE "MY_MONGO" #define COLLECTION "MY_MONGO_COLLECTION" int main (int argc, char *argv[]) { mongoc_client_t *client; mongoc_collection_t *collection; mongoc_cursor_t *cursor; mongoc_read_prefs_t *read_prefs; bson_iter_t iter; bson_iter_t value; const bson_t *doc; bson_t *filter; bson_t *opts; bson_error_t error; char *str; // mongoDB C driver 초기화 + DB 클라이언트 생성 mongoc_init (); client = mongoc_client_new (SERVER); mongoc_client_set_appname (client, "find_example"); // 컬랙션에 접근할 객체 생성 collection =...

MongoDB C driver 사용법 5-1 - FIND (SELECT)

NoSQL은 FIND RDB는 SELECT 뭐가 다르다고.. 표현을 달리했을까 ? 암튼.. 익숙한 select라는 표현을 더 자주쓰게되는것 같다 select 에 요점은.. 원하는걸 찾아서 필요한 데이터만 추출 원하는 데이터를 정렬 정도 이려나 ? 우선은 완전 기본적인 select 예제를 작성해봤습니다. (미리 birth_year:2001 이라는 데이터 두개를 삽입해둔 상태에서 아래 소스를 실행합니다) #include <bson.h> #include <mongoc.h> #include <stdio.h> #define SERVER "mongodb://localhost:27017/" #define DATABASE "MY_MONGO" #define COLLECTION "MY_MONGO_COLLECTION" int main (int argc, char *argv[]) { mongoc_client_t *client; mongoc_collection_t *collection; mongoc_cursor_t *cursor; bson_iter_t iter; bson_iter_t value; const bson_t *doc; bson_t *filter; bson_error_t error; char *str; // mongoDB C driver 초기화 + DB 클라이언트 생성 mongoc_init (); client = mongoc_client_new (SERVER); mongoc_client_set_appname (client, "find_example"); // ...

MongoDB C driver 사용법 4 - UPDATE

UPDATE ! 보통 업데이트라 함은 기존 내용에 일부를 변경할때 사용한다 그런데 이번 예제를 작성하면서는 기존 내용을 덮어쓰기 (overwrite)하는 현상때문에 해결방법을 찾느라 삽질을 좀했다.. 삽질과정 update 함수의 플래그 변경을통한 update 시도도 해보고 다른 업데이트 함수가 있는지 찾다가 mongoc_collection_save함수가잇어서 사용하려고했더니 "Deprecated" 될거라고 하고 -_- update문을 사용하려면 기존내용을 일단 select 해와서 동일 객체를 만들어서 일부만 변경된 값을 반영해야하나 ? 하고 고민고민고민... 다행히도 일부만 update 할수있도록 제공해주고있는걸 발견해서 아래 내용에 정리해보았다 그럼 예제소스 고고 ~ #include <bson.h> #include <mongoc.h> #include <stdio.h> #define SERVER "mongodb://localhost:27017/" #define DATABASE "MY_MONGO" #define COLLECTION "MY_MONGO_COLLECTION" int main (int argc, char *argv[]) { mongoc_client_t *client; mongoc_collection_t *collection; bson_error_t error; bson_t reply; bson_t *doc; bson_t child; bson_t *query; // mongoDB C driver 초기화 + DB 클라이언트 생성 mongoc_init (); client...

MongoDB C driver 사용법 3 - BSON 객체 만들기 그리고 INSERT

MY_MONGO 라는 데이터베이스에  - MY_MONGO_COLLECTION 이라는 컬레션을 만들었습니다. 그럼이제 MY_MONGO_COLLECTION에 bson_t 구조체로 문서(document)를 만들어서 insert 하는 방법을 예제소스와 함께 설명해보겠습니다. [참고] bson_t 객체를 만드는 방법은 3가지가 있습니다. 1. 함수를 사용하는방법 2. BCON을 사용하는 방법 3. JSON 문자열을 BSON으로 전환하는 방법 아래 소스에 주석으로 세가지방법이 안내되어있습니다. #include <bson.h> #include <mongoc.h> #include <stdio.h> #define SERVER "mongodb://localhost:27017/" #define DATABASE "MY_MONGO" #define COLLECTION "MY_MONGO_COLLECTION" int main (int argc, char *argv[]) { mongoc_client_t *client; mongoc_collection_t *collection; bson_error_t error; bson_oid_t oid; // BSON Ojbect ID Abstraction bson_t *doc; // mongoDB C driver 초기화 + DB 클라이언트 생성 mongoc_init (); client = mongoc_client_new (SERVER); mongoc_client_set_appname (client, "insert_example"); // 컬랙션에 접근할 객체 생성 ...

MongoDB C driver 사용법 2 - create collection and key

MongoDB 서버 구축 완료 MongoDB C Driver 를 구비 완료 그럼 데이터베이스를 쌓아야겠죠 ? 우선 간단하게 집고넘어갈 개념을 MySQL 과 MongoDB를 비교해서 알려드릴께요 1. -----  MYSQL : 데이터베이스 = MongoDB : 데이터베이스 MYSQL : 테이블 = MongoDB : 컬레션 명칭이 다르긴한데.. 음..비슷한 개념이라고 이해하면 됩니다 2. -----  MongoDB 는 Document 기반 DB입니다. Document라 함은 JSON 데이터 라고 생각하시면 되구요 mongoDB에서는 Binary JSON 이라고해서 BSON 이라는걸 사용하고있습니다 3. -----  따라서 아래와같은 간단한 설명을 할 수 있게됩니다 MYSQL : 데이터베이스에 테이블을 만들고 row 단위로 insert, update, select, delete를 한다. MongoDB : 데이터베이스에 컬렉션을 만들고 document 단위로 insert, update, find, remove를 하다 여담. ----- RDB는 insert 뒤에 그 내용을 기반으로 update 를 하지만 NoSQL 에서는 insert 된게 없어도 update 시도하면 insert+update 가된느 upsert라는 개념이있다곤 하던데 그래서 찾아봤더니 _id 필드가 존재하면 update, 없으면 insert 하는 기능에 mongoc_collection_save() 함수가 있는데 이는.. 없어질것이니 사용하지말라고 권고되어있다. (http://mongoc.org/libmongoc/current/mongoc_collection_save.html) 대신에 mongoc_collection_update() 함수 사용시 flag 파라미터를  MONGOC_UPDATE_UPSERT 로 설정하면  upsert 를 수행한다 설명은 예제소스와 함께 주석으로 작성되며 동일한 기능에...

MongoDB C driver 사용법 1 - 설치

MongoDB 서버를 설치했다면 Driver를 사용해서 서버에 접근해야할것이다. 아래 이미지에서 보여지듯이 다양한 언어를 지원하는 MongoDB Driver 종류를 볼수있는데요 저는 그중에서 C언어 기반에 MongoDB C Driver 1.6.3 을 사용하려고 합니다. MongoDB C Driver Github : https://github.com/mongodb/mongo-c-driver 드라이버 소개 페이지 : http://mongoc.org/libmongoc/current/index.html 저는 MongoDB C Driver 소개페이지에서 안내하고있는 설치방법 중에서 소스설치 방법을 작성해보려 합니다. 초간단 드라이버 설치 시작 !  $ wget https://github.com/mongodb/mongo-c-driver/releases/download/1.6.3/mongo-c-driver-1.6.3.tar.gz $ tar xzf mongo-c-driver-1.6.3.tar.gz $ cd mongo-c-driver-1.6.3 $ ./configure --disable-automatic-init-and-cleanup $ make $ sudo make install 끝 !  그럼 컴파일할때 어떻게 참조 하나요 ?  만약 C 로 코딩해서  test.c 라는 소스를 작성했다고 했을 때  아래와같이 수행하면 됩니다.  gcc -o test test.c -I/usr/local/include/libmongoc-1.0 -I/usr/local/include/libbson-1.0 -L/usr/local/lib/ -L/usr/lib64 -lmongoc-1.0 -lbson-1.0