몽고디비 사용법

Lia·2021년 7월 7일
6

Node.js

목록 보기
5/5
Contents
1. 몽고디비 실행 / 접속
2. DB 생성하기
3. Collection 생성하기
4. Create
5. Read
6. Update
7. Delete

몽고디비는 NoSQL 중에서 유명한 데이터베이스 중 하나 입니다.
NoSQL 은 고정된 테이블이 없어서 자유롭게
데이터를 입력할 수 있다는 장점이 있습니다.
하지만 동시에 쿼리를 수행할 경우 쿼리가 섞여서
예상치 못한 결과가 발생할 수 있다는 단점도 있습니다.


# 01 - 몽고디비 실행 / 접속

몽고디비를 실행하기 전에 C:\data\db 폴더를 만들어야 합니다.
위 폴더를 만들지 않으면 몽고디비는 실행되지 않습니다.

폴더 생성 후 mongod 명령어를 입력하면 몽고디비가 실행됩니다.
cd "C:\Program Files\MongoDB\Server\4.4\bin"
mongod

몽고디비에 접속하기 위해서는 다른 명령어를 사용해야 합니다.
몽고디비에 접속하려면 mongo 명령어를 사용합니다
mongo

만약 몽고디비를 실행할 때에 mongod --auth 로 실행을 했다면
mongo 명령어 뒤에 옵션을 사용하여 접속해야 합니다.
mongo admin -u [ID] -p [PW]

위 처럼 아이디 패스워드로 접속을 하려면 DB에 계정이 있어야 합니다.
> use admin
> db.createUser({ user: 'ID', pwd: 'PW', roles: ['root'] })


# 02 - DB 생성하기

use [DB Name]
use 명령어를 사용하면 mongo shell 에서 사용하는 데이터베이스를 바꿀 수 있습니다.

공식문서 설명에는 사용가능한 데이터베이스를 현재 shell에서 사용하는
데이터베이스로 바꿀 수 있다고 기술되어 있습니다.

데이터베이스 목록을 확인하려면 show dbs 명령어로 확인할 수 있습니다.
그리고 데이터베이스를 새로 생성할 수 있습니다.

이용가능한 데이터베이스가 존재하지 않을 경우 데이터베이스를 새로 생성합니다.

현재 shell에서 사용중인 데이터베이스는 db 명령어로 확인 가능합니다.


# 03 - Collection 생성하기

몽고디비는 NoSql 이기 때문에 일반 Sql 과 사용하는 용어가 다릅니다.
몽고디비에서 말하는 CollectionSql 에서의 Table 과 같습니다.

Collection을 생성하는 명령어는 db.createCollection('collection_name') 입니다.
그리고 생성한 Collection 목록을 확인하는 명령어는 show collections 입니다.


# 04 - Create

컬렉션에 컬럼 즉 필드를 따로 정의하지 않아도 컬렉션에는 아무 데이터나
자유롭게 넣을 수 있습니다.

db.collection.save()document 를 생성할 수 있습니다.
몽고디비에서 document 는 Sql 에서의 row 와 같습니다.

db.collection.save({ name: 'sue', age: 26, status: 'pending' })
위와 같이 json 형식으로 document 를 생성할 수 있습니다.

몽고디비 4.2 버전부터 db.collection.save() 를 지원하기는 하지만
공식문서에는 db.collection.insertOne() 혹은 db.collection.insertMany() 를 사용하는것을 권장하고 있습니다.


# 05 - Read

조회를 하기 위해서는 db.collection.find(query, projection) 를 사용합니다.
query 에는 조건, projection 에는 조회할 필드(컬럼) 를 입력합니다.

db.collection.use({ age: { &gt: 20 } }, { _id: 0, name: 1, status: 1 })
위와 같이 조회를 할 수 있습니다. query에 조건을 입력할 때에 특수 연산자를 사용합니다.
특수 연산자들은 다음과 같습니다.

&eq ==> 같음 (==)
&gt ==> 초과 (>)
&gte ==> 이상 (>=)
&in ==> 전달한 배열 요소중 하나
&lt ==> 미만 (<)
&lte ==> 이하 (<=)
&ne ==> 같지 않음 (!=)
&nin ==> 전달한 배열 요소중에 없거나 필드가 존재하지 않을 때 조회

그리고 projection 에 조회할 필드를 전달 할 때에 ( 0 )은 조회하지 않고 ( 1 )은 조회합니다.


# 06 - Update

수정을 하기 위해서는 db.collection.update(query, update, options) 를 사용합니다.

db.collection.update({ name: 'sue' }, { $set: { status: 'brokers' } })
위와 같이 필드를 수정할 수 있습니다. 위 예시에서는 queryupdate 를 사용했습니다.
query 에는 수정할 document를 지정하고 update 에는 수정할 내용을 입력합니다.

여기서 update&set 특수 연산자를 사용하였습니다.
&set 연산자를 사용하면 수정 할 필드를 지정할 수 있습니다.
만약 &set 연산자를 사용하지 않으면 document가 통째로 바뀌어 버립니다.


# 07 - Delete

삭제를 하기 위해서는 db.collection.remove() 를 사용합니다.

db.collection.remove({ name: 'sue' })
위와 같이 삭제할 document에 대한 정보가 담긴 객체를
첫 번째 인수로 제공하여 삭제할 수 있습니다.




본 블로그는 조현영(zerocho)님의 저서 'Node.js 교과서 개정2판'을 참고하여 정리한 글입니다. 이점 참고 부탁드립니다.

profile
하고싶은게 많아요

0개의 댓글