case SQL:
SELECT MAX(sid) FROM {TABLE NAME};
case MongoDB:
#include <bson.h> #include <mongoc.h> #define MGDOID "sid" // MongoDB에서 최고값 가져오기 unsigned long GetMaxFromMongoDB() { mongoc_client_t *client; mongoc_collection_t *collection; mongoc_cursor_t *cursor; bson_t *pipeline; bson_iter_t iter; const bson_t *doc; const bson_value_t *value; unsigned long ans; // for debug clock_t cStartClock; cStartClock = clock(); //mongoDB 초기화 mongoc_init(); client = mongoc_client_new(MONGO_SERVER); if (!client) { fprintf(stderr, "[MongoDB] Failed to parse URI.\n"); return 0; } //MongoDB - Collection 연결 collection = mongoc_client_get_collection (client, MONGO_DBNAME, MONGO_COLLECTION); pipeline = BCON_NEW ("pipeline", "[", "{", "$project", "{", MGDOID, BCON_INT32(1), "}", "}", "{", "$sort", "{", MGDOID, BCON_INT32(-1), "}", "}", "{", "$limit", BCON_INT32(1), "}", "]"); cursor = mongoc_collection_aggregate(collection, MONGOC_QUERY_NONE, pipeline, NULL, NULL); while (mongoc_cursor_next(cursor, &doc)) { if(bson_iter_init(&iter, doc)) { while (bson_iter_next(&iter)) { if( strncmp(bson_iter_key(&iter), MGDOID, 3) == 0) { value = bson_iter_value (&iter); //fprintf(stderr, "[%" PRId64 "]\n", value->value.v_int64); ans = (long)value->value.v_int64; } } } } bson_destroy(pipeline); mongoc_collection_destroy (collection); mongoc_client_destroy (client); mongoc_cleanup(); cStartClock = (clock() - cStartClock); fprintf(stderr, "> GET MAX ID From MongoDB[%ld]: %2.8f sec.\n", ans, cStartClock / (double)CLOCKS_PER_SEC); return ans; }
댓글 없음:
댓글 쓰기