[ MongoDB ] 기본명령어(CRUD)

데이터베이스 선택
db
처음 MongoDB 서버로 접속을 하면 test 데이터베이스에 연결을 하고 이 데이터베이스 연결을 전역변수인 db에 할당을 하기 때문에 db 명령어를 통해 현재 db에 할당된 데이터베이스를 확인할 수 있다.
> db
test


use
만약 원하는 데이터베이스를 선택하여 데이터 작업을 하려고 한다면, use 명령어로 원하는 데이터베이스 이름으로 선택해주고 db명령어로 확인해보면 테이블이 바뀐것을 확인할 수가 있다. (만약 해당 데이터베이스가 존재하지 않는다면 새롭게 생성이 되고, 기존에 있던 DB 중에서 이름이 일치하는 DB가 존재한다면 해당 DB를 선택하게 된다.)
> use movies
switched to db movies




추가
Document 추가
insert
insert 함수는 collection에 문서(document)를 추가하는 명령어이다.
예를 들어 영화 정보를 저장한다고 가정하자.
우선 movies라는 collection을 db 명령어를 통해 선택하고, 아래와 같이 "title"과 "genre"를 키 값으로 가지는 문서를 생성해서 movies 콜렉션에 추가해보자.
(insert 명령어를 통해 문서를 생성하고자 한다면 반드시 JSON 표기방식을 사용해야 한다.)
> movie = {
... "title" : "재심",
... "genre" : "드라마",
... }
"title" : "재심""genre" : "드라마" }
> db.movies.insert(movie)
WriteResult({ "nInserted" : 1 })


또는 아래처럼 문서를 콜렉션에 추가해줘도 된다.
> db.movies.insert(
... {"title" : "더킹""genre" : "범죄" }
... )
WriteResult({ "nInserted" : 1 })


추가해준 문서들을 확인하려면 find()를 통해 확인할 수 있다.
> db.movies.find()
"_id" : ObjectId("58b1ae415c79f0fac2d3af4f"), "title" : "재심""genre" : "드라마" }
"_id" : ObjectId("58b1af265c79f0fac2d3af51"), "title" : "더킹", "genre" "범죄" }




조회
Database 조회
db
현재 선택된 데이터베이스 조회
> db
movies


show dbs
데이터베이스 리스트 조회
(use 명령어로 데이터베이스를 만들었다 하더라도, 최소한 한 개 이상의 도큐먼트가 추가되어 있지 않다면, 데이터베이스 리스트 조회시 보이지 않는다.)
> show dbs
admin   0.000GB
local   0.000GB
movies  0.000GB


Collection 조회
show collections
현재 데이터베이스에 생성된 콜렉션들을 조회

> show collections
movies


Document 조회
전체조회 - find()  /  조건조회 - findOne()
find()는 앞에서 살펴본 것처럼 해당 콜렉션에 추가된 모든 데이터들을 조회할 수 있다.
그러나 단일 문서를 보고자 한다면 findOne()을 사용하면 된다.
> db.movies.findOne()
{
        "_id" : ObjectId("58b1ae415c79f0fac2d3af4f"),
        "title" : "재심",
        "genre" : "드라마"
}



아래처럼 조건 지정도 가능하다.
> db.movies.findOne({"title" : "더킹"})
{
        "_id" : ObjectId("58b1b4105c79f0fac2d3af52"),
        "title" : "더킹",
        "genre" : "범죄"
}



find 속성지정
find( { }, { } )
예를 들어 movies 콜렉션에 추가된 document들 중에서 _id값은 안보고 title만 골라서 보겠다고 한다면 아래처럼 조건을 지정해주어서 조회할 수도 있다.
> db.movies.find( { }, {"_id" : false"title" : true} )
"title" : "재심" }
"title" : "더킹" }




수정
update
게시물을 수정하고 싶다면 update를 사용하면 된다. update는 최소 두 개의 매개변수를 갖는데, 첫 번째는 수정할 문서를 찾기 위한 기준이고, 두 번째는 새로운 문서이다.

앞서 만들어둔 movies라는 콜렉션에서 연령제한 정보를 추가한다고 가정하자.
그러기 위해서는 문서에 새로운 키 값으로 limit 배열을 추가해주면 된다.
> movie.limit = []
[ ]


limit 배열을 기존 문서에 추가되도록 수정하려면 아래와 같이 하면 된다.
> db.movies.update(
... {title : "재심"}, movie
... )
WriteResult({ "nMatched" : 1"nUpserted" : 0"nModified" : 1 })


추가됐는지 확인을 해보자.
> db.movies.find()
"_id" : ObjectId("58b1ae415c79f0fac2d3af4f"), "title" : "재심""genre" : "드라마""limit" : [ ] }
"_id" : ObjectId("58b1b4105c79f0fac2d3af52"), "title" : "더킹""genre" : "범죄" }


이 밖에도 아래와 같은 방법들로 update 처리를 해줄 수도 있다.

- 특정필드 추가
  db.컬렉션명.update({조건}, {$set:{새필드:새값}})

- 특정필드 삭제
   db.컬렉션명.update({조건}, {$unset:{필드:}})

- 특정필드 배열에 데이터 추가
  db.컬렉션명.update({조건}, {$push:{배열필드:추가할 값}})

- 특정필드 배열에 있는 데이터 삭제
  db.컬렉션명.update({조건}, {$pull:{배열필드:삭제할값}})



삭제
Database 삭제
> db.dropDatabase()
"dropped" : "movies""ok" : 1 }


Collection 삭제
> db.movies.drop()
true
> db.movies.find()
>


Document 삭제
전체삭제 
> db.movies.remove({})
WriteResult({"nRemoved" : 2})


조건삭제
> db.movies.remove({"title" : "더킹"})
WriteResult({"nRemoved" : 1})

댓글

이 블로그의 인기 게시물

[SPRING] log4j2.xml 설정

[ Javascript ] 프로토타입 이해하기

[JWT] 토큰(Token) 기반 인증에 대한 소개