mongoDB 설치 가이드 및 CRUD 예제

이미지 출처: https://webassets.mongodb.com/_com_assets/cms/MongoDB-Logo-5c3a7405a85675366beb3a5ec4c032348c390b3f142f5e6dddf1d78e2df5cb5c.png


오늘은 mongoDB를 설치하고 monogoDB client tool인 robomongo를 이용해서 CRUD 예제를 만들어보겠습니다. mongoDB의 경우 홈페이지에 설치 및 사용가이드가 아주 잘 되어 있지만 빠르게 기본기능을 체험해보고 싶은 분들을 위하여 제가 간단하게 정리해보도록 하겠습니다.

01. mongoDB 다운로드

아래 URL로 접속해서 파일을 다운로드 받습니다.
https://www.mongodb.com/download-center?jmp=nav#community

02. 설치

다운로드 받은 mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi 파일을 설치합니다.

a. Next 클릭
b. I accept the terms in the License Agreement 항목 체크
c. Next 클릭
d. Complete 클릭
e. Install 클릭

03. 기본 디렉토리 및 설정파일 생성

아래와 같이 데이터파일 폴더와 설정파일을 생성합니다. 이름은 바꾸셔도 됩니다.

D:\mongodb\data
D:\mongodb\log
D:\mongodb\mongod.cfg 

04. mongoDB 설정파일 편집 및 적용

관련링크: https://docs.mongodb.com/v3.2/reference/configuration-options/
전 두 가지 항목만 설정했습니다.
좀전에 생성한 'D:\mongodb\mongod.cfg' 파일을 열고 아래의 내용을 입력합니다.
참고로 설정파일은 yaml문법으로 작성해야 합니다. (공백문자는 tab 말고 space를 사용하세요)
1
2
3
4
5
6
7
8
systemLog:
    destination: file
    path: D:/mongodb/log/mongod.log
storage:
    dbPath: "D:/mongodb/data"
    directoryPerDB: true
    journal:
        enabled: true
cs


05. mongoDB 실행하기

관련링크: https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-windows/
아래 순서로 실행합니다.
a. 관리자 권한으로 커맨드창 실행
b. 커맨드창에서 아래 명령어 실행
"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe" --config  D:\mongodb\mongod.cfg

06. mongo Shell 실행하기

관련링크: https://docs.mongodb.com/manual/mongo/
아래 순서로 실행합니다.
a. 관리자 권한으로 커맨드창 실행
b. 커맨드창에서 아래 명령어 실행
"C:\Program Files\MongoDB\Server\3.2\bin\mongo.exe

07. robomongo 다운로드

mongoDB 설치 기 기본으로 제공되는 mongo Shell보다 쉽게 쿼리를 다룰 수 있도록 도와주는 client tool을 받아보도록 
하겠습니다.
아래 URL로 접속해서 파일을 다운로드 받습니다.
https://robomongo.org/download
전 포터블 버전을 다운받았습니다.

08. robomongo 압축해제

전 아래 경로에 압축을 해제했습니다.
D:\mongodb\robomongo-0.9.0-windows-x86_64-0786489

09. robomongo 실행

a. Robomongo.exe 실행
b. Create 클릭
 
c. 정보입력 후 Save버튼 클릭
 
d. 접속정보 선택 후 Connect버튼 클릭
 
e. 접속완료
 

10. robomongo를 이용한 CRUD

관련링크: https://docs.mongodb.com/manual/crud/
mongoDB CRUD는 관련링크에 아주 자세히 나와 있습니다.
여기서는 그중 몇가지만 맛보기로 소개하도록 하겠습니다.

a. collection(table) drop

1
db.users.drop()
cs


b. row(document) insert

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
db.users.insertMany(
  [
     {
       _id: 1,
       name: "sue",
       age: 19,
       type: 1,
       status: "P",
       favorites: { artist: "Picasso", food: "pizza" },
       finished: [ 173 ],
       badges: [ "blue""black" ],
       points: [
          { points: 85, bonus: 20 },
          { points: 85, bonus: 10 }
       ]
     },
     {
       _id: 2,
       name: "bob",
       age: 42,
       type: 1,
       status: "A",
       favorites: { artist: "Miro", food: "meringue" },
       finished: [ 1125 ],
       badges: [ "green" ],
       points: [
          { points: 85, bonus: 20 },
          { points: 64, bonus: 12 }
       ]
     },
     {
       _id: 3,
       name: "ahn",
       age: 22,
       type: 2,
       status: "A",
       favorites: { artist: "Cassatt", food: "cake" },
       finished: [ 6 ],
       badges: [ "blue""red" ],
       points: [
          { points: 81, bonus: 8 },
          { points: 55, bonus: 20 }
       ]
     },
     {
       _id: 4,
       name: "xi",
       age: 34,
       type: 2,
       status: "D",
       favorites: { artist: "Chagall", food: "chocolate" },
       finished: [ 511 ],
       badges: [ "red""black" ],
       points: [
          { points: 53, bonus: 15 },
          { points: 51, bonus: 15 }
       ]
     },
     {
       _id: 5,
       name: "xyz",
       age: 23,
       type: 2,
       status: "D",
       favorites: { artist: "Noguchi", food: "nougat" },
       finished: [ 146 ],
       badges: [ "orange" ],
       points: [
          { points: 71, bonus: 20 }
       ]
     },
     {
       _id: 6,
       name: "abc",
       age: 43,
       type: 1,
       status: "A",
       favorites: { food: "pizza", artist: "Picasso" },
       finished: [ 1812 ],
       badges: [ "black""blue" ],
       points: [
          { points: 78, bonus: 8 },
          { points: 57, bonus: 7 }
       ]
     }
  ]
)
cs


c. collection 내의 전체 document 조회

1
db.users.find( {} )
cs


d. status 값이 P 또는 D인 document를 조회

1
db.users.find( { status: { $in: [ "P""D" ] } } )
cs


e. status 값이 A이면서 age 값 30보다 작은 document를 조회

1
db.users.find( { status: "A", age: { $lt: 30 } } )
cs


Table of contents


Open source project on GitHub


Jupyter/IPython Notebook


Open API


NoSQL


Jekyll


Gradle


Kotlin


C++

  • C++ keywords
  • 윤성우 열혈강의 C++ 프로그래밍 예제코드 [펼치기]
    1. C언어 기반의 C++ 1
      • printf와 scanf를 대신하는 입출력 방식
      • 함수 오버로딩(Function Overloading)
      • 매개변수의 디폴트 값(Default Value)
      • 인라인 함수(Inline)함수
      • 이름공간(namespace)에 대한 소개
    2. C언어 기반의 C++ 2
      • 새로운 자료형 bool
      • 참조자(Reference)의 이해
      • 참조자(Reference)와 함수
      • maloc & free를 대신하는 new & delete
      • C++에서 C언어의 표준함수 호출하기
    3. 클래스의 기본
      • C++에서의 구조체
      • 클래스(Class)와 객체(Object)
      • 객체지향 프로그래밍의 이해
    4. 클래스의 완성
      • 정보은닉(Information Hiding)
      • 캡슐화(Encapsulation)
      • 생성자(Constructor)와 소멸자(Destructor)
      • 클래스와 배열 그리고 this 포인터
    5. 복사 생성자
      • ‘복사 생성자’ 와의 첫 만남
      • ‘깊은 복사’와 ‘얕은 복사’
      • 복사 생성자의 호출시점
    6. friend와 static 그리고 const
      • const와 관련해서 아직 못다한 이야기
      • 클래스와 함수에 대한 friend 선언
      • C++에서의 static
    7. 상속(Inheritance)의 이해
      • 상속에 들어가기에 앞서
      • 상속의 문법적인 이해
      • protected 선언과 세 가지 형태의 상속
      • 상속을 위한 조건
    8. 상속과 다형성
      • 객체 포인터의 참조관계
      • 가상함수(Vitual Function)
      • 가상 소멸자와 참조자의 참조 가능성
    9. 가상(Virtual)의 원리와 다중상속
      • 멤버함수와 가상함수의 동작원리
      • 다중상속(Multiple Inheritance)에 대한 이해
    10. 연산자 오버로딩 1
      • 연산자 오버로딩의 이해와 유형
      • 단항 연산자의 오버로딩의
      • 교환법칙 문제의 해결
      • cout, cin 그리고 endl의 정체
    11. 연산자 오버로딩 2
      • 반드시 해야 하는 대입 연산자의 오버로딩
      • 배열의 인덱스 연산자 오버로딩
      • 그 이외의 연산자 오버로딩
    12. String 클래스의 디자인
      • C++ 표준과 표즌 string 클래스
      • 문자열 처리 클래스의 정의
    13. 템플릿(Template) 1
      • 템플릿(Template)에 대한 이해와 함수 템플릿
      • 클래스 템플릿(Class Temlpate)
    14. 템플릿(Template) 2
      • Chapter 13에서 공부한 내용의 확장
      • 클래스 템플릿의 특수화(Class Temlpate Specialization)
      • 템플릿의 인자
      • 템플릿과 static
    15. 예외처리(Exception Handling)
      • 예외상황과 예외처리의 이해
      • C++의 예외처리 메커니즘
      • Stack Unwinding(스택 풀기)
      • 예외상황을 표현하는 예외 클래스의 설계
      • 예외처리와 관련된 또 다른 특성들
    16. C++의 형 변환 연산자
      • C++에서의 형 변환 연산

ETC