Skip to content

이번 포스팅에서는 MongoDB의 기본 Query 명령어에 대해 알아보도록 하겠습니다.

우선 시작에 앞서 01. MongoDB 시작하기를 참고하여 DB를 시작하시고, Query 명령문을 입력할 수 있도록 준비하시기 발바니다.


DB 생성

Mongo 현재 DB의 리스트를 확인하는 명령줄은 다음과 같습니다:

show dbs

기본적은로, 세가지 DB가 미리 등록되어 있음을 확인할 수 있습니다:

  • admin
  • config
  • local

일단 이들이 어떤 역할을 하는지는 추후 포스팅에서 살펴보도록 하며, 지금은 DB를 하나 생성하겠습니다:

use test

Create

다음과 같이 "title", "content", "date" 키를 갖는 "post" 변수 생성해 보겠습니다.

post = {"title" : "My first blog post", "content" : "Getting started with MongDB", "date" : new Date()}

위의 명령에서 알 수 있듯이, MongoDB의 입출력 도큐먼트 단위는 JSON 형태를 갖습니다.

insert 명령을 통해 등록된 post 변수를 blog라는 콜렉션에 저장합니다:

> db.blog.insert(post)
WriteResult({ "nInserted" : 1 })

이제 test db가 가지고 있는 콜렉션 리스트를 확인해 보도록 하겠습니다:

> db.getCollectionNames()
[ "blog" ]

입력이 성공되면 WriteResult({ "nInserted" : 1 })라는 형태의 메시지가 출력될 것입니다.

find 명령을 입력하여 blog 콜렉션에 저장된 값 확인해 봅니다:

> db.blog.find()
{ "_id" : ObjectId("5fa5fef52bc718484524b2d2"), "title" : "My first blog post", "content" : "Getting started with MongDB", "date" : ISODate("2020-11-07T01:53:32.663Z") }

한가지 팁으로 .pretty()를 추가로 붙이면, 좀 더 깔끔한 형태로 결과를 출력할 수 있습니다.

> db.blog.find().pretty()
        "_id" : ObjectId("5fa5fef52bc718484524b2d2"),
        "title" : "My first blog post",
        "content" : "Getting started with MongDB",
        "date" : ISODate("2020-11-07T01:53:32.663Z")
}
.pretty()를 이용한 깔끔한 출력 결과

Update

post 컬렉션에 comments 키 생성을 합니다:

> post.comments = []
[ ]

> post
{
    "title" : "My first blog post",
    "content" : "Getting Started with MongoDB",
    "date" : ISODate("2014-01-17T10:04:08.641Z"),
    "comments" : [ ]
}

My first blog post라는 타이틀을 가진 post로 도큐먼트 업데이트를 업데이트 합니다:

> db.blog.update({"title" : "My first blog post"}, post)

> db.blog.findOne().pretty()
{
    "_id" : ObjectId("52d900298d2a9dc822dd0eea"),
    "title" : "My first blog post",
    "content" : "Getting Started with MongoDB",
    "date" : ISODate("2014-01-17T10:04:08.641Z"),
    "comments" : [ ]
}

Delete

My first blog post이라는 title의 컬렉션을 삭제해 보겠습니다:

> db.blog.remove({title : "My first blog post"})
> db.blog.findOne()
null