본문 바로가기
쿤즈 Server/MongoDB

[MongoDB] Atlas 명령어 연결 및 find() 검색기능 사용방법

by :)Koon 2021. 3. 13.

MongoDB가 무엇인지부터 MongoDB에서 사용하는 JSON과 BSON에 대해서도 차근차근 알아봤습니다. 기존에 많이 알려진 관계형 데이터베이스(RDBMS)가 아닌 NoSQL을 이용해서 데이터를 저장하는 방법을 채택하고 있는 DB가 바로 MongoDB입니다.

 

 

이번 포스팅에서는 MongoDB에 있는 데이터를 가져오는 find() 함수를 알아보도록 하겠습니다.


MongoDB Atlas Cluster 연결하기

몽고 디비에 가입하고 Atlas에 연결하는 방법에는 웹을 이용하는 방법과 Shell을 이용하는 방법이 있습니다. 웹은 기본적인 Id, password 방식으로 접근하며 쉘은 아래와 같은 명령어를 이용해서 접근하도록 합니다.

 

mongo "mongodb+srv://<username>:<password>@<cluster>.mongodb.net/admin"

 

Id에 해당하는 username과 비밀번호에 해당하는 password를 넣고 cluster에 해당하는 주소를 넣어주면 접속이 가능합니다. 이 정보는 최초 Atlas에 접속해서 정보를 확인해야 합니다.


기본적인 Document 및 Collection 접근 명령어

쉘을 이용해서 Atlas cluster에 접근했다면 이제 MongoDB에 어떠한 DB들이 있는지 확인해 볼 수 명령어가 필요합니다. 우선 DB들을 볼 수 있는 명령어입니다.

show dbs

위와 같이 입력하면 내 계정에 가지고 있는 Documents 혹은 DB 목록들을 보실 수 있습니다,

 

 

여기서 원하는 DB에 접근하기 위해서 내가 사용할 DB로 이동해야 합니다. 사용하기 위한 DB를 선택하는 명령어는 아래와 같습니다.

use [db name]

예를 들어서 sample_training이라는 DB로 이동하기 위해서는 'use sample_training'이라고 입력하시면 됩니다.

 

여기서 유의할 점은 만약 존재하지 않는 DB명을 입력한다 해도 접근이 가능하는 것입니다. MongoDB의 경우는 굉장히 유연하기 때문에 존재하지 않는 DB에 접근해서 자료를 검색하거나 입력해도 그 명령문이 그대로 입력된다는 사실을 잊지 마세요.

 

접근했으니 내부에 Collections들을 보도록 할게요. Collections은 RDBMS에서 Table이라 생각하시면 됩니다. 명령어는 다음과 같습니다.

show collections

위와 같이 입력하면 현재 접근한 DB의 모든 collectinos을 볼 수 있습니다.

그럼 이제 collections에 저장되어 있는 데이터들을 검색을 통해서 가져오는 방법을 알아보겠습니다.


MongoDB에서 데이터 검색 방법

MongoDB의 문법을 익히 는 것은 2가지입니다. 먼저 기본적으로 Javascript와 같은 방법으로 사용하는 것과 JSON형태로 조건을 만드는 것입니다. 그럼 가장 먼저 데이터를 검색할 때 사용하는 명령어를 알아야 합니다. 검색 명령어는 find()입니다. 그럼 find() 함수를 사용하는 방법을 알아보겠습니다.

db.[collections name].find({"[key]":"[value]"})

DB를 선택하고 collections 이름과 find()를 조합해서 원하는 조건을 검색합니다. 예를 들어서 위 검색 결과인 zips collection을 이용해 보도록 하겠습니다. 먼저 모든 검색 결과를 보고 싶을 때에는 find({})라고 입력합니다. 

db.zips.find({})

조건은 반드시 중괄호{}를 묶어서 입력해 주어야 정상적인 검색 결과를 얻을 수 있습니다.

그럼 조건을 넣어볼게요. state값이 NY인 결과를 검색해 보도록 하겠습니다.

db.zips.find({"state":"NY"})

위와 같이 입력하면 보시는 바와 같이 결과를 얻을 수 있습니다. 가장 마지막에 보시면 Type "it" for more라는 문구가 등장하는데, 이는 몽고 DB는 한 번에 20개의 결과물을 가지고 옵니다. 결과물이 더 많다면 it을 입력하여 이후 결과물들을 추가적으로 계속 확인할 수 있습니다.


검색 데이터가 너무 많거나 데이터의 수를 알고 싶을 때 사용하는 함수는 count()입니다. 위에 예제를 이어서 count() 함수를 이용해 보도록 하겠습니다.

db.zips.find({"state": "NY"}).count()

위 명령어를 이용하면 "state"가 "NY"인 조건에 맞는 데이터의 수가 return 됩니다.


그럼 이번에는 조건이 1개가 아닌 2개를 입력해서 검색해 보겠습니다. "state"는 "NY"이며 "city"가 "ALBANY"인 조건으로 검색해 보겠습니다.

db.zips.find({"state": "NY", "city": "ALBANY"})

하나의 중괄호 안에 2개의 조건을 넣어줍니다. 조건은 key:value 형태이며 콤마(,)로 구분지어서 여러 개의 조건을 만들어 주시면 됩니다. 검색된 데이터를 보기 좋게 출력하기 위해서 pretty() 함수를 붙여줍니다.

pretty() 함수를 사용하니 훨씬 보기 좋게 출력되네요.


이번 포스팅에서는 MongoDB의 find() 함수를 이용해서 검색하는 방법을 알아보았습니다. RDBMS와 같이 Query를 만드는 것보다는 조건을 직관적으로 입력하다 보니 훨씬 간결하고 편한 부분이 있는 것 같습니다. 다음에는 데이터를 넣는 방법을 알아보도록 하겠습니다. 도움이 되셨으면 합니다. 이상입니다.

댓글