MongoDb 의 기본 동작 빠 른 입문

1. MongoDb 안내
   mongodb 는 분포 식 저장 소 를 기반 으로 하 는 오픈 소스 데이터베이스 시스템 으로 문서 데이터베이스 라 고도 불 린 다. 데 이 터 를 하나의 문서 로 저장 할 수 있 고 데이터 구 조 는 키 쌍 (key = > value) 으로 구성 되 며 저 장 된 문 서 는 JSON 대상 (BSON - > JSON 의 바 이 너 리 화) 과 유사 하 다.
   특징: 내부 실행 엔진 은 JS 해석 기로 문 서 를 BSON 구조 로 저장 하고 조회 할 때 JS 대상 으로 전환 하 며 익숙 한 JS 문법 으로 조작 할 수 있 습 니 다.
   mongodb 와 전통 데이터 베 이 스 를 간단하게 비교 하고 가장 큰 차이 점:
    전통 형 데이터 베이스: 구조 화 된 데 이 터 는 표 구 조 를 정 한 후에 모든 줄 의 내용 은 반드시 표 구조 에 부합 되 어야 한다. 즉, 열의 개수 와 유형 이 모두 같다 는 것 이다.
   문서 데이터베이스: 표 아래 의 모든 문 서 는 자신 만 의 독특한 구조 나 속성 과 값 을 가 질 수 있 습 니 다.
2. MongoDb 의 설치 (centos 7 에서 상세 한 설치 절차)
1) 우선 mongodb 설치 패 키 지 를 다운로드:
#wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.4.tgz

2) 다운로드 한 디 렉 터 리 에 들 어가 서 mongodb 의 설치 패 키 지 를 지정 한 디 렉 터 리 에 압축 해제 합 니 다.
#tar -xvf mongodb-linux-x86_64-rhel70-3.4.4.tgz -C /usr/local

3) 압축 해 제 된 디 렉 터 리 에 들 어가 mongodb 서 비 스 를 시작 합 니 다.
#cd /usr/local

MongoDb 압축 해제 디 렉 터 리 이름 바 꾸 기
#mv mongodb-linux-x86_64-rhel70-3.4.4 mongodb
#cd mongodb

4) MongoDb 시작
#mkdir -p /home/mongodata/ /var/log/mongolog/
#./bin/mongod --dbpath /home/mongodata/ --logpath /var/log/mongolog/mongo.log --fork --port 27017

시작 매개 변수 설명:
   --dbpath 데이터 저장 디 렉 터 리
   --logpath 로그 저장 디 렉 터 리
   --포트 실행 포트
   --fork 배경 실행
5) 클 라 이언 트 를 통 해 MongoDb 에 접속
#./bin/mongo

메모: 일부 오래된 버 전에 서 MongoDb 가 시작 할 때 디스크 공간 을 많이 차지 합 니 다. 시작 후 3 - 4G 공간 을 차지 해 야 할 수도 있 습 니 다. 가상 컴퓨터 의 공간 이 너무 작 으 면 시작 할 수 없 지만 smallfiles 는 시작 할 때 사용 하 는 공간 을 400 M 정도 로 줄 일 수 있 습 니 다.
3. mongodb 구체 적 인 조작 예시
1. mongodb 의 입문 작업:
1) 모든 라 이브 러 리 목록 조회
>show dbs;

2) 데이터베이스 전환 (사용 할 데이터베이스 선택)
>use local;

3) 데이터베이스 만 들 기
(메모: mongodb 데이터 베 이 스 는 암시 적 으로 데이터 베 이 스 를 만 드 는 방법 이 없 기 때문에 use 를 사용 하여 사전에 존재 하지 않 는 라 이브 러 리 아래로 전환 할 수 있 습 니 다. 표 (collections) 를 만 들 때 현재 데이터 베 이 스 를 자동 으로 만 듭 니 다)
>use shop

(shop 라 이브 러 리 가 존재 하지 않 는 다 고 가정 하고 use 를 직접 사용 할 수도 있 습 니 다)
>db.createCollection('user');

(존재 하지 않 는 라 이브 러 리 아래 에 collections 를 직접 만 들 수 있 습 니 다 (또는 표를 만 들 수 있 습 니 다)
>show dbs;

그리고 라 이브 러 리 를 다시 보 러 갔 을 때 라 이브 러 리 샵 이 기본적으로 만 들 어 졌 다 는 것 을 알 게 될 것 입 니 다.
4) 테이블 만 들 기 (collections)
>db.createCollection('user')

메모: 표 (즉 collections) 는 암시 적 으로 만 들 수도 있 고 위의 예 를 들 어 shop 창고 에 goods 표 (collections) 가 존재 하지 않 는 다 면 우 리 는 아래 의 방식 으로 데 이 터 를 삽입 할 수 있 습 니 다.
>db.goods.insert({_id:1,name:'pipixia',price:52.10});

그리고 우 리 는 shop 라 이브 러 리 에 있 는 시계 (collections) 를 보 러 갔 을 때 goods 가 자동 으로 만들어 진 것 을 발견 했다.
5) collections (표) 에 단일 문서 (데이터) 삽입 (삽 입 된 데 이 터 는 json 형식)
>db.user.insert({name:'  ',age:18})

6) collections (표) 의 내용 찾기
>db.user.find()

7) collections 삭제 (표) ()
>db.user.drop()

8) 데이터베이스 삭제 (databases)
>db.dropDatabase()

2. mongodb 의 기본 동작 (추가, 삭제, 수정, 검사) CURD
1. 추가 동작: insert
메모: mongodb 는 문 서 를 저장 합 니 다. 문서 라 는 것 은 제 이 슨 형식의 대상 입 니 다.
1) 단일 문서 추가
>db.collectionName.insert({sn:'001',name:'xiaoming'})

2) 단일 문서 추가 및 id 지정
>db.collectionName.insert({_id:2,sn:'002',name:'xiaohong'})

3) 여러 개의 문 서 를 추가 합 니 다 (json 은 하나의 대상 이기 때문에 js 안에 배열 의 개념 이 있 습 니 다. 여러 개의 대상 을 배열 에 넣 으 면 됩 니 다)
>db.collectionName.insert([{sn:'003','name':'zhangfei'},{sn:'004','name':'guanyu'},{sn:'004','name':'liubei'}])

2. 삭제 작업: remove
문법: db. collectionName. remove (검색 표현 식, 옵션)
옵션 은 {justOne: true / false} 을 말 합 니 다. 한 줄 을 삭제 할 지 여 부 는 기본적으로 false 입 니 다.
주의:
    1. 조회 표현 식 은 여전히 json 대상 입 니 다.
    2. 검색 식 이 일치 하 는 줄 은 삭 제 됩 니 다
    3. 검색 표현 식 이 없 으 면 collections 의 모든 문서 가 삭 제 됩 니 다.
1) 지 정 된 json 문서 삭제 (json 형식의 대상)
예 를 들 어 collection Name 표 의 sn 속성 값 이 002 인 json 대상 문 서 를 삭제 합 니 다.
>db.collectionName.remove({sn:'002'})

2) 조회 식 이 비어 있 으 면 다음 과 같다.
>db.collectionName.remove()

라 이브 러 리 에 있 는 모든 문 서 를 삭제 합 니 다. 사용 조심 하 십시오.
3) 검색 표현 식 에 맞 는 한 줄 의 데 이 터 를 삭제 하려 면 위 에서 언급 한 '옵션' 기능 을 사용 할 수 있 습 니 다. 예 를 들 어
>db.collectionName.remove({"name":"zhangsan"},true)

zhangsan 에 맞 는 모든 name 문서 데이터 만 삭제 합 니 다.
3. 조작 변경: update
문법: db. collectionName. update (검색 표현 식, 새 값, 옵션)
1) 조회 표현 식 은 누 구 를 수정 해 야 하 는 지, 새 값 은 어떻게 바 뀌 어야 하 는 지, 옵션 은 선택 가능 한 매개 변 수 를 말한다.
예 를 들 면:
>db.collectionName.update({name:'zhangfei'},{name:'zhangfeifei'})

변경 결과 보기
>db.collectionName.find()
수 정 된 문서 에 id 와 name 열 만 남 았 고 sn 열 이 보이 지 않 습 니 다.
원인: 새 문 서 는 수정 이 아니 라 오래된 문 서 를 직접 바 꾸 었 습 니 다.
2) 그러나 우 리 는 $set 를 사용 하여 열 을 수정 할 수 있 습 니 다.
>db.collectionName.update({name:'guanyu'},{$set:{name:'guanyunchang'}})

변 경 된 할당 식
$set 열 값 수정
$unset 열 삭제
$rename 열 이름 바 꾸 기
$inc 열 값 증가
3) 복잡 한 업데이트 작업
먼저 데 이 터 를 삽입 합 니 다.
>db.collectionName.insert({name:'caocao',age:40,sex:'m',addr:'wei')

이 데 이 터 를 수정 합 니 다.
>db.collectionName.update({name:'caocao'},{$set:{name:'caoaman'},$unset:{addr:1},$rename:{sex:'gender'},$inc:{age:10}})

4) 세 번 째 선택 가능 한 매개 변수 option 의 역할:
{upsert:true/false,multi:true/false}
   upsert 는 일치 하 는 줄 이 없 으 면 이 줄 을 직접 삽입 하 는 것 을 말한다.(my sql 의 replace 와 유사 합 니 다)
예 를 들 면:
>db.collectionName.update({_id:100},{name:'liubei'},{upsert:true})

하면, 만약, 만약...id 가 100 인 문 서 는 이 문 서 를 직접 삽입 합 니 다.
주의: 없 으 면id 가 100 인 문서 이 고 upsert 에서 선택 할 수 있 는 인자 가 없 으 면 새 작업 과 표 의 문서 에 영향 을 주지 않 습 니 다.
   멀 티 는 여러 줄 을 고 칠 까 말 까 하 는 거 예요.
즉, 검색 표현 식 이 여러 줄 에 일치 하면 기본적으로 한 줄 만 변경 되 며, 여러 줄 을 수정 하려 면 이 옵션 을 사용 해 야 합 니 다.
예 를 들 면:
>db.collectionName.update({sex:'m'},$set:{sex:'w'},{multi:true})

collection Name 의 모든 sex = m 문 서 를 sex = w 로 수정 합 니 다.
4. 조작 검사: find, findOne
문법: db. collection. find (검색 표현 식, 검색 열)
예 를 들 면:
1) 모든 문서 조회
>db.collectionName.find()

2) 모든 문서 의 sex 속성 조회 (열)
>db.collectionName.find({},{sex:1})

3) 모든 문서 의 sex 속성 을 조회 하고 조회 하지 않 음id 속성
>db.collectionName.find({},{sex:1,_id:0})

주의: 추가 삭제 와 검 사 를 막론하고 하나의 조회 표현 식 과 떨 어 질 수 없습니다. 이상 의 예 는 비교적 간단 한 입문 작업 입 니 다.

좋은 웹페이지 즐겨찾기