티스토리 뷰

Database

MongoDB 사용법

서보민 2018. 3. 12. 17:49

MongoDB 사용법

설치환경

  • MacOS
  • homebrew버전 : homebrew 1.3.2
  • Ubuntu Version : Xenial (16.04 LTS)
  • Apt Version : apt 1.2.24 (amd64)
  • MongoDB Version : v3.4.9

MongoDB?

몽고DB는 데이터 객체들이 컬렉션 내부에서 독립된 문서로 저장되는, 문서 모델을 기반으로 하는 NoSQL 데이터베이스입니다.

MongoDB는 무료 오픈 소스 크로스 플랫폼 문서 지향 데이터베이스 프로그램입니다. 

NoSQL 데이터베이스 프로그램으로 분류 된 MongoDB는 스키마와 함께 JSON과 유사한 문서를 사용합니다. 

MongoDB는 MongoDB Inc.에 의해 개발되었으며 GNU Affero General Public License와 Apache License의 조합으로 발행됩니다.

출처 : [ https://en.wikipedia.org/wiki/MongoDB ]

NOSQL?

NoSQL 데이터베이스는 관계형 데이터베이스에서 사용되는 테이블 관계가 아닌 다른 방법으로 모델링 된 데이터의 저장 및 검색 메커니즘을 제공합니다. 

이러한 데이터베이스는 1960 년대 후반부터 존재했지만 페이스 북, 구글, 아마존과 같은 웹 2.0 회사의 필요에 의해 촉발 된 21 세기 초반에 대중의 인기가 높아질 때까지 "NoSQL"이라는 별명을 얻지 못했습니다 

NoSQL 데이터베이스는 대용량 데이터 및 실시간 웹 응용 프로그램에서 점점 더 많이 사용되고 있습니다. NoSQL 시스템은 SQL과 유사한 쿼리 언어를 지원할 수 있다는 점을 강조하기 위해 "Not only SQL"라고도합니다.

출처 : [ https://en.wikipedia.org/wiki/NoSQL ]

MongoDB install from MacOS

brew를 이용해 설치 

 brew search mongodb
 brew install mongodb

설치가 정상적으로 완료 되었다면 version확인

 mongod --version

MongoDB install from Linux(Ubuntu)

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo service mongod start

사용법

- console

mongoDB 접속

mongo OR mongod

mongoDB 데이터베이스 확인

show dbs

데이터 베이스 생성

use 데이터베이스명

 예) use test

user 생성

db.createUser({user:"생성ID", pwd: "비밀번호", roles: [{role:"권한",db:"데이터베이스"}]});

 예) db.createUser({user:"test", pwd:"test", roles: [{role:"readWrite", db:"test"}]});

user 조회

show users;

user 삭제

db.dropUser("유저ID");

 예) db.dropUser("test");

컬렉션 생성

db.createCollection("컬렉션 명");

 예) db.createCollection("people");

컬렉션 내의 데이터 조회

db.컬렉션명.find(); OR db.컬렉션명.find({});

 예) db.people.find(); OR db.people.find({});

컬레션 내의 특정 데이터 조회

db.컬렉션명.find({필드명});

 예) db.people.find({name:"test"});

_id를 제외한 조회

db.컬렉션명.find({}, {_id:false});

한 객체만을 조회

db.컬렉션명.findOne();

이 명령어는 가장 먼저 넣은 객체가 반환됩니다.

예) 1,2,3,4,5 순으로 데이터를 삽입했으면 db.컬렉션명.findOne()명령 실행 시 1이 반환, 최근 데이터가아님

데이터 정렬

db.컬렉션명.find().sort(조건);

 예) db.people.find({}).sort({name:1});

정렬에서는 1이 오름차순, 0이 내림차순

데이터 삽입

db.컬렉션명.insert({필드명: "A", 필드명:"B"})
db.컬렉션명.save({필드명: "A", 필드명:"B"})

 예) db.people.insert({name:"test", gender:"male"});
    db.people.save({필드명: "A", 필드명:"B"});

save는 그대로 복사해서 넣게 된다. 

예) db.people.save({name:"test"}); -> db.people.find(); 시 save부분은 name:"test"만 들어가게된다.

데이터 수정

db.컬렉션명.update({수정할 필드명: "A"}, {$set{필드명: "수정될 값" }})

 예) db.people.update({name:"A"},{$set{gender:"female"}});

데이터 삭제

db.컬렉션명.remove({필드명: "값"});

 예) db.people.remove({name:"A"});

- node

import * as mongodb from 'mongodb';

const MongodbClient: mongodb.MongoClient = mongodb.MongoClient;
// const url: string = 'mongodb://localhost:27017/moabase';
const url: string = 'mongodb://seonho:DBLab321**@203.230.100.61:27000/seonho';

// insertMany
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;
     const myObj = [
         {name: 'lsw', gender: 'male'},
         {name: 'syr', gender: 'female'},
         {name: 'bjs', gender: 'female'},
     ];

     db.collection('people').insertMany(myObj, (err: Error, res: any): void => {
         if (err) throw err;
         console.log('Number of documents inserted: ' + res.insertedCount);
         db.close();
     });

 });
 // insert
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;
     const query = {name: 'knj', gender: 'male'};

     db.collection('people').insertOne(query, (err: Error): void => {
         if (err) throw err;
         console.log('1 document inserted');

         db.close();
     });
 });
 // findOne
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;
     db.collection('people').findOne({name: 'knj'}, ((err: Error, result: any): void => {
         if (err) throw err;
         console.log(result);
         db.close();
     }));
 });


// findAll
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;

    db.collection('people').find({}).toArray((err: Error, result: any): void => {
        if (err) throw err;
         console.log(result);
         db.close();
     });
 });
// findSome => username 이 'bhlee' 인 documents 조회
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;
     db.collection('people').find({name: 'knj'}).toArray((err: Error, result: any): any => {
         if (err) throw err;
         console.log(result);
         db.close();
     });
 });

 // findSome =>  documents 에서 username 만 포함해서 조회
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;
     db.collection('people').find({name: 'knj'}, {_id: false, name: true})
         .toArray((err: Error, result: any): any => {
             if (err) throw err;
             console.log(result);
             db.close();
         });
 });

// sort
// { username: 1 } // ascending
// { username: -1 } // descending
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;
     const mySort = {name: 1};
     db.collection('people').find().sort(mySort).toArray((err: Error, result: any) => {
         if (err) throw err;
         console.log(result);
         db.close();
     });
 });


 //delete
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;
     const query = {name: 'knj'};

     db.collection('people').deleteOne(query, (err: Error): void => {
         if (err) throw err;
         console.log('1 document deleted');
         db.close();
     });
 });

 deleteMany => delete starts with the letter "b":
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;
     const myQuery = {name: /^b/};

     db.collection('people').deleteMany(myQuery, (err: Error, obj: any): void => {
         if (err) throw err;
         console.log(obj.result.n + ' document(s) deleted');
         db.close();
     });
 });

 // update
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;
     const query = {name: 'knj'};
     const newValue = {$set: {name: 'knj2'}};

     db.collection('people').updateOne(query, newValue, (err: Error, obj: any): void => {
         if (err) throw err;
         console.log(obj.result.nModified + ' document(s) updated');
         db.close();
     });
 });

 // updateMany => update starts with the letter "b":
 MongodbClient.connect(url, (err: Error, db: any): void => {
     if (err) throw err;
     const myQuery = {name: /^b/};
     const newValues = {$set: {name: 'bhlee3'}};

     db.collection('people').updateMany(myQuery, newValues, (err: Error, obj: any): void => {
         if (err) throw err;
         console.log(obj.result.nModified + ' document(s) updated');
         db.close();
     });
 });




'Database' 카테고리의 다른 글

ElephantSQL 사용  (0) 2020.05.05
MVCC 메커니즘  (0) 2018.07.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/02   »
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
글 보관함