연습과제/Mongo DB 쿼리 연습

Mongo DB 연습과제

syleemomo 2021. 10. 6. 16:46
728x90

 

csv 샘플 데이터 

 

Sample CSV Data – SpatialKey Support

Jump right in and try out SpatialKey using sample data! SpatialKey unlocks the full potential of time- and location-based information like nothing else out there. In minutes, you can upload a data file and create and share interactive time- and map-based a

support.spatialkey.com

회사에서는 대량의 데이터를 쿼리할 일이 많다. 그래서 Mongo DB에서 배운 CRUD 내용을 활용하여 샘플 데이터에서 쿼리 연습을 해보자!

우선 링크를 클릭하고 Sales transactions 우측의 CSV파일을 다운로드하자. 내려받은 파일을 Mongo DB GUI인 Mogo DB Compass에서 임포트(import)한다. 아래 예시처럼 진행하면 임포트가 된다.

컬렉션 생성

Mongo DB 서버에 접속한 다음 데이터베이스를 생성하고, sales라는 컬렉션을 생성한다.

salse 컬렉션 생성 모습

sales 컬렉션을 클릭하면 아래와 같은 화면이 나온다.

ADD DATA 버튼을 클릭하면 Import FIle 메뉴가 나오며 이를 클릭하면 아래와 같은 화면이 나온다.

Select File에서 BROWSE 버튼을 클릭하면 미리 다운로드 받은 CSV 파일을 선택할 수 있다. Select Input File Type에서 csv를 선택하고 IMPORT 버튼을 클릭하면 된다. 

자! 이제 쿼리 연습을 해보자. 연습문제로 남겨둔다. FILTER 창에서 쿼리를 하고 FIND 버튼을 클릭하면 쿼리가 된다. RESET 버튼을 클릭하면 다시 전체 컬렉션이 나열되어 다음 쿼리를 연습해볼 수 있다. 그래도 FIND 버튼이 비활성화이면 맨 위에 탭(+모양)을 클릭하고 새 탭을 열면 된다.

 

1. Payment_Type이 "Visa"이고, Price가 "1200"인 도큐먼트들만 추출해보자.

{Payment_Type: 'Visa', Price: '1200'} 

 

2. Payment_Type이 "Visa"이고, Price가 "2000"보다 큰 도큐먼트들만 추출해보자.

{Payment_Type: 'Visa', Price: { $gt: '2000'}}

문자열로 나타난 숫자는 비교할때 문자열처럼 사전순으로 비교한다. 예를 들면, '2000'과 '250'은 첫번째 문자가 2이므로 같고 두번째 문자가 0과 5이므로 '250'이 더 크다고 쿼리한다. 그러므로 크기 비교는 문자열을 숫자로 변경한 다음에 해야 정확하다.

 

3. State가 "AL" 또는 "CA"인 도큐먼트들만 추출해보자.

{State:{$in: ["AL", "CA"]}}

State 라는 같은 필드값에 대해 다양한 조건을 하나 이상 만족하는 쿼리를 할때는 in 연산자를 사용한다. 

 

4. State가 "LA"거나 Product가 "Product3"인 도큐먼트들만 추출해보자.

$or: [{State: "LA"},{Product:"Product3"}]}

State 와 Product 라는 서로 다른 필드값 각각의 조건을 하나 이상 만족하는 쿼리를 할때는 or 연산자를 사용한다. 

728x90