Contents1. 몽고디비 실행 / 접속 2. DB 생성하기 3. Collection 생성하기 4. Create 5. Read 6. Update 7. Delete
몽고디비는 NoSQL 중에서 유명한 데이터베이스 중 하나 입니다.
NoSQL 은 고정된 테이블이 없어서 자유롭게
데이터를 입력할 수 있다는 장점이 있습니다.
하지만 동시에 쿼리를 수행할 경우 쿼리가 섞여서
예상치 못한 결과가 발생할 수 있다는 단점도 있습니다.
몽고디비를 실행하기 전에 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'] })
use [DB Name]
use 명령어를 사용하면 mongo shell 에서 사용하는 데이터베이스를 바꿀 수 있습니다.
공식문서 설명에는 사용가능한 데이터베이스를 현재 shell에서 사용하는
데이터베이스로 바꿀 수 있다고 기술되어 있습니다.
데이터베이스 목록을 확인하려면 show dbs 명령어로 확인할 수 있습니다.
그리고 데이터베이스를 새로 생성할 수 있습니다.
이용가능한 데이터베이스가 존재하지 않을 경우 데이터베이스를 새로 생성합니다.
현재 shell에서 사용중인 데이터베이스는 db 명령어로 확인 가능합니다.
몽고디비는 NoSql 이기 때문에 일반 Sql 과 사용하는 용어가 다릅니다.
몽고디비에서 말하는 Collection 은 Sql 에서의 Table 과 같습니다.
Collection을 생성하는 명령어는 db.createCollection('collection_name') 입니다.
그리고 생성한 Collection 목록을 확인하는 명령어는 show collections 입니다.
컬렉션에 컬럼 즉 필드를 따로 정의하지 않아도 컬렉션에는 아무 데이터나
자유롭게 넣을 수 있습니다.
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() 를 사용하는것을 권장하고 있습니다.
조회를 하기 위해서는 db.collection.find(query, projection) 를 사용합니다.
query 에는 조건, projection 에는 조회할 필드(컬럼) 를 입력합니다.
db.collection.use({ age: { >: 20 } }, { _id: 0, name: 1, status: 1 })
위와 같이 조회를 할 수 있습니다. query에 조건을 입력할 때에 특수 연산자를 사용합니다.
특수 연산자들은 다음과 같습니다.
&eq ==> 같음 (==)
> ==> 초과 (>)
>e ==> 이상 (>=)
&in ==> 전달한 배열 요소중 하나
< ==> 미만 (<)
<e ==> 이하 (<=)
&ne ==> 같지 않음 (!=)
&nin ==> 전달한 배열 요소중에 없거나 필드가 존재하지 않을 때 조회
그리고 projection 에 조회할 필드를 전달 할 때에 ( 0 )은 조회하지 않고 ( 1 )은 조회합니다.
수정을 하기 위해서는 db.collection.update(query, update, options) 를 사용합니다.
db.collection.update({ name: 'sue' }, { $set: { status: 'brokers' } })
위와 같이 필드를 수정할 수 있습니다. 위 예시에서는 query 와 update 를 사용했습니다.
query 에는 수정할 document를 지정하고 update 에는 수정할 내용을 입력합니다.
여기서 update 에 &set 특수 연산자를 사용하였습니다.
&set 연산자를 사용하면 수정 할 필드를 지정할 수 있습니다.
만약 &set 연산자를 사용하지 않으면 document가 통째로 바뀌어 버립니다.
삭제를 하기 위해서는 db.collection.remove() 를 사용합니다.
db.collection.remove({ name: 'sue' })
위와 같이 삭제할 document에 대한 정보가 담긴 객체를
첫 번째 인수로 제공하여 삭제할 수 있습니다.