간단 MongoDB 운영 명령


1. MongoDB Windows Service 등록하는 방법


mongod.exe -f d:\mongodb\config\mongod.yaml -install



mongod.yaml file 구성


systemLog:
   destination: file
   path: "d:\\mongodb\\data\\log\\mongod.log"
   logAppend: true
storage:
   dbPath: "d:\\mongodb\\data\\db"
   journal:
      enabled: true
net:
   bindIp: 0.0.0.0
   port: 27017




2. 전체 백업

mongodump.exe --out 백업디렉토리 --db db명


3. db전체 복원

mongorestore /db:db명  백업화일위치디렉토리


MongoDB에 저장된 데이터 중 특정 Subset(Array) 데이터들만 조회하는 방법에 대한 설명입니다.


MongoDB에서 데이터들을 조회할 때에는 Javascript 를 활용해서 필요한 데이터들을 조합할 수 있습니다.


1)  var myCursor = db.receipt.find({}, {"storeName":1, "marketId":1, "items.barcode":1, "items.name":1, "items.unitPrice":1, _id:0});
  var storeName = null;
  var marketId = null;

2)  while (myCursor.hasNext()) {
    var allReceipt = myCursor.next();
    var receipt = allReceipt.items;    

    marketId = allReceipt.marketId;
    storeName = allReceipt.storeName;

    for( var i = 0; i < receipt.length; i++ )
    {
3)        var item = receipt[i];
4)        print(marketId + "@" + storeName + "@"+item.barcode + "@" + item.name + "@" + item.unitPrice);
    }
  }



몽고 DB로 데이터를 저장시에는 비정규화를 해서 데이터를 저장하도록 권장하고 있는데..

예를 들어 A라는 사람이 C1, C2, C3 라는 물건을 샀다고 가정하는 경우 해당 정보를 하나의 레코드로 저장하게 될 경우가 생깁니다.

즉 하나의 레코드는 아래와 같이 저장됩니다.


{ "Name":"A", purchaseProducts:[{"itemName":"C1"},  {"itemName":"C2"}, {"itemName":"C3"}]}


이렇게 데이터가 저장되어져 있는 경우 누가 샀는지보다 사람들이 산 모든 물건을 추출해야 할 경우가 생길 수 있는데요.

이럴 때 활용할 수 있는 MongoDB 스크립트가 위에 있는 예시 입니다.


항목별로 보면

1) 번에는 어떠한 필드를 조회할지 선택을 합니다.

  즉, 조회 결과에 출력할 기본 필드에 대해서는 "필드명":1 이라고 선언하게 되면 기본적으로 find를 이용하여 데이터 조회시 해당 필드만 출력되게 됩니다. 특이한 점은 저는 MongoDB 에서 기본적으로 출력되는 "_id" 필드에 대해서는 조회할 필요가 없기에 0 으로 설정해서 출력되지 않도록 설정했습니다.

또한 해당 조회 결과를 Cursor 를 이용해서 핸들링 하려 합니다.


2) 번에서 모든 레코드를 다 읽을 때까지 반복하게 됩니다.


3) 번에서는 위의 설명에서 예를 든 하나의 레코드 안의 배열들 즉, purchaseProducts 같은 배열만 따로 변수에 할당합니다.


4) 번에서는 할당된 배열에 대해서 건별로 출력하게 됩니다.


사실 RDBMS에 익숙하다면 이러한 상황에 대해 잘 이해가 안 가실수도 있겠지만..

위에서도 언급했듯이 비정규화된 데이터들 중 레코드별로 입력된 특정 subset만 추출하고자 한다면..

여러 가지 방법을 찾아봤지만 이 방법이 최선일 것 같습니다.

'IT 이야기' 카테고리의 다른 글

MongoDB Install, Backup, Restore  (0) 2016.12.20
IP 정보로 활용 가능한 서비스 범위  (0) 2016.11.08
베뉴 8 Pro Windows 10 업그레이드  (0) 2016.06.29
택배 조회 URL 모음  (0) 2016.04.06
Windows용 Mantis 설치  (0) 2015.05.29

+ Recent posts