성장에 목마른 코린이

MongoDB CRUD - READ 본문

CodeStates/Section 3 (백엔드)

MongoDB CRUD - READ

성장하는 코린이 2022. 4. 17. 04:52
728x90

READ - find 명령어

일정 조건에 따라 데이터를 조회하는 방법과 조회한 데이터의 수를 세는 방법

 

show dbs

노란색 블록으로 작성된 부분과 같이 터미널로 아틀라스 클러스터에 접속합니다.

접속한 뒤, 미리 받아둔 MongoDB에서 샘플로 제공하는 데이터베이스 리스트를 터미널에서 확인하겠습니다.

이 작업을 위해서는 show dbs라는 명령어를 사용합니다.

use db, show collections

만약 sample_training 데이터베이스를 사용한다고 하면, use sample_training이라는 명령어를 입력합니다.

이때 sample_training 자리에는 사용하고자 하는 데이터베이스의 이름이 작성되어야 합니다.

데이터베이스가 어떤 컬렉션을 가지고 있는지 보고 싶다면 show collection 명령어를 사용합니다.

show collections라는 명령어를 입력하면,

sample_training 데이터베이스 안의 컬렉션 리스트가 나타나는 것을 확인할 수 있습니다.

zips라는 컬렉션에는 미국의 우편번호 관련 데이터가 저장되어 있습니다.

뉴욕 주의 우편번호 관련 데이터를 조회하려고 합니다. 이때 드디어 find라는 명령어를 사용합니다.

find를 사용한 전체 쿼리 형식은 슬라이드에 보라색으로 작성한 부분과 같습니다.

뉴욕 주라고 하는 특정 조건을 만족하는 데이터를 찾으려고 하기 때문에,

쿼리문 부분에 조건을 넣어 터미널에 작성된 것과 같은 명령어를 작성할 수 있습니다.

 

db.zips.find({"state":"NY"}) 명령어를 사용할 때,

이미 필요한 데이터베이스 공간으로 이동했기 때문에 사용할 데이터베이스의 이름을 특정해서 작성할 필요가 없습니다. 위 명령어에서 db는 sample_training 데이터베이스를 가리킵니다.

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

db.zips.find({“state” : “NY”})의 결과물이 다음과 같이 JSON 형식으로 화면에 출력되는 것을 볼 수 있습니다.

이때 find 명령어에 따른 실제 결과물은 화면에 출력된 것보다 훨씬 많지만,

화면에는 랜덤하게 선택된 20개 결과물만 출력됩니다.

 

해당 조건에 맞는 다음 20개의 도큐먼트를 조회하기 위해서는,

화면의 주황색 블록과 같이 iterate의 줄임말인 it 명령어를 사용해야 합니다.

우리는 지금 한 가지 조건을 충족하는 결과물을 출력했습니다.

만약 zips 컬렉션의 데이터 중 뉴욕 주에 위치한 ALBANY시의 우편번호만 보고 싶다고 하면 어떻게 해야 할까요?

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

두 가지의 조건을 주고 싶다면, 그 조건을 find(<쿼리문1, 쿼리문2>)의 형태로 적어주면 됩니다. 결과로 두 쿼리문을 만족하는 결과가 출력되고, 총 7개의 데이터이기 때문에 it 을 타이핑하라는 문구는 뜨지 않습니다.

 

만약 zips 컬렉션의 데이터 전체를 보고 싶다고 하면 어떻게 해야 할까요?

만약 zips 데이터베이스의 모든 데이터를 조회하고 싶다면,

다음 터미널에 작성된 코드와 같이 find 명령어를 조건 쿼리문 없이 사용하면 됩니다.

 

pretty( ) 명령어, 데이터의 수 조회

pretty( )는 도큐먼트의 구조와 각각의 필드, 값의 쌍을 조금 더 읽기 편하게 만들어 줍니다.

 

그러나 이러한 방식으로는 조회한 데이터의 수를 알기 어렵습니다.

데이터의 수를 조회하기 위해서는 count( )라고 하는 명령어를 사용합니다.

그러면 연두색 블록과 같이, zips 컬렉션 안 모든 데이터의 수가 출력이 됩니다.

 

특정한 1개의 데이터 조회 findOne()

초록색 블록과 같이 findOne이라는 명령어를 사용하고,

MongoDB의 도큐먼트를 구별하는 고유한 값인 _id를 조건으로 주어 데이터를 특정하겠습니다.

그 결과로 주황색 블록과 같이 데이터 1개가 출력되는 것을 볼 수 있습니다.

작위의 데이터 1개만 가져올 수도 있습니다.

이 경우에는 앞에서 find를 사용하여 전체 데이터를 가져온 것과 같이,

조건 쿼리문을 작성하지 않은 상태의 findOne( )을 사용하면 됩니다.

'CodeStates > Section 3 (백엔드)' 카테고리의 다른 글

MongoDB CRUD - DELETE  (0) 2022.04.17
MongoDB CRUD - UPDATE  (0) 2022.04.17
MongoDB CRUD - Create  (0) 2022.04.17
Atlas Cluster 생성하기  (0) 2022.04.17
데이터베이스 설계 (관계형 데이터베이스)  (0) 2022.04.07
Comments