티스토리 뷰

728x90

1. 개요

  MongoLab API를 안드로이드에서 사용하기 위한 라이브러리입니다.

DB와 안드로이드를 보안적 문제 때문에 직접적으로 연결 할 수 없습니다. REST 서비스를 구성할 줄 몰라 구축하였던 MongoDB를 사용을 못하게 되어 대책을 찾다 MongoLab을 찾게 되었고, 이때 만들었던 함수들을 정리해보았습니다.



2. MongoLabClient.java

  MongoLab 홈페이지(http://docs.mlab.com/data-api/)에서 제공하고 있는 API를 이용하여 각 함수를 만들었습니다. 함수 이름은 MongoDB가 제공해주는 Java함수를 따라하였습니다.


 1. 경로 설정 : 서비스 시기에 따라 Url이 변경될 수 있기 때문에 사용하기전 홈페이지 API 레퍼런스를 꼭 확인하시기 바랍니다.


 2. 생성자 : 생성자에는 꼭 API key가 들어갑니다. 


 3. Database 이름과 Collection 이름은 대다수 함수 사용에 필요합니다. 설계시 한번 MongoLabClient를 생성하면 재활용 할 수 있게 Database 이름과 Collection 이름을 변경하는 함수로 만들었지만 다 만들고 나니 AsyncTask의 특징상 한번 실행하면 다시 사용 못해 크게 의미없는 함수가 되었습니다.


 3. 로그인한 ID가 가지고 있는 Database 이름을 모두 보여줍니다.


 4. 특정 Database가 가지고 있는 Collection 이름을 모두 보여줍니다.


 5. insert함수들 입니다.



 6. Find 관련 함수들입니다.


 7. Collection에 들어있는 document의 개수를 세어주는 함수입니다.


 8. Update 함수입니다.


 9. 삭제함수입니다, 삭제 함수는 Json형태의 데이터로 삭제 대상자를 찾는 구문을 못 만들었습니다.




3. Sample Code

  통신에 대한 내용은 Log.e로 하여 출력되게 하였습니다. 그리고 UI에 대한 코드가 없기 때문에 MainActivity.java만 올렸습니다.

package com.example.pc43.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {
    private String API_KEY = "_nn1V5xxRxq8MHOKUBN4NHzr18_4WsUq";
    private String DATABASE = "whitewhale";
    private String COLLECTION = "test";
    private MongoLabClient mongoLabClient;
    JSONObject jsonObject,jsonObject2,jsonObject3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Check Databases and Collections
        mongoLabClient = new MongoLabClient(API_KEY);
        mongoLabClient.getDatabaseName();

        mongoLabClient = new MongoLabClient(API_KEY);
        mongoLabClient.getCollectionName(DATABASE);

        mongoLabClient = new MongoLabClient(API_KEY,DATABASE);
        mongoLabClient.getCollectionName();

        //Insert Example
        try {
            jsonObject = new JSONObject();
            jsonObject.put("one", "data01");
            jsonObject.put("two", "jsonObject");
            jsonObject2 = new JSONObject();
            jsonObject2.put("three-one", 99);
            jsonObject2.put("three-two", "BasicDBObject");
            jsonObject.put("three", jsonObject2);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.insert(jsonObject);

        try {
            jsonObject = new JSONObject();
            jsonObject.put("one", "data02");
            jsonObject.put("two", "jsonObject");
            jsonObject.put("three", 33);
            jsonObject2 = new JSONObject();
            jsonObject2.put("one", "data03");
            jsonObject2.put("two", "jsonObject");
            jsonObject2.put("three", 33);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        JSONArray jsonArray= new JSONArray();
        jsonArray.put(jsonObject);
        jsonArray.put(jsonObject2);
        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.insert(jsonArray);

        //Count Example
        try {
            jsonObject = new JSONObject();
            jsonObject.put("three", 33);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.count();

        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.count(jsonObject);

        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.count(jsonObject.toString());

        //Find Example
        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.find();

        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.find(jsonObject);

        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.find(jsonObject.toString());

        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.findOne(jsonObject);

        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.findOne(jsonObject.toString());

        //Update Example
        try {
            jsonObject = new JSONObject();
            jsonObject.put("name", "data01");
            jsonObject2 = new JSONObject();
            jsonObject2.put("three", 1111);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.update(jsonObject,jsonObject2);

        try {
            jsonObject = new JSONObject();
            jsonObject.put("name", "data02");
            jsonObject2 = new JSONObject();
            jsonObject2.put("three", 100);
            jsonObject3 = new JSONObject();
            jsonObject3.put("set", jsonObject2);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.update(jsonObject.toString(),jsonObject3);

        try {
            jsonObject = new JSONObject();
            jsonObject.put("name", "data03");
            jsonObject2 = new JSONObject();
            jsonObject2.put("three", 100);
            jsonObject3 = new JSONObject();
            jsonObject3.put("inc", jsonObject2);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.update(jsonObject,jsonObject3.toString());

        //Delete Example, Deletion is only possible with id.
        mongoLabClient = new MongoLabClient(API_KEY,DATABASE,COLLECTION);
        mongoLabClient.delete("5938e82bc2ef166bf5111825");
    }
}



4. Download

  소스코드는 위의 소스코드를 사용하셔도 되고 https://github.com/cckr2/MongoLabClient에서도 다운받을  수 있습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함