공부기록

MongoDB 파일 불러오기 및 인덱스 설정하기 본문

코딩 공부/SQL

MongoDB 파일 불러오기 및 인덱스 설정하기

맘모스빵러버 2021. 5. 14. 18:29

이번 학기에  NoSQL과목을 수강하며 배운내용을 정리해보겠습니다.

중간고사 이전 내용부터 정리해보려고 했는데..! 일단 :-D

 

현재 배우는 내용부터 정리해보겠습니다. 

 


1. MongoDB 데이터 불러오기

 

먼저 MongoDB에 데이터를 불러오는 방법에 대해 말씀드리겠습니다 .

 

먼저 저같은 경우에는 C드라이브 밑에 mongodb 밑에 data파일을 만들어 거기에 파일을 넣어주고 있습니다.

 

어떻게 설정했느냐에 따라 다를 수 있지만 대부분 이렇게 하시면 import 가능하실겁니다.

 

그리고 cmd창을 열어줍니다.

그리고 아까 파일을 넣어준 위치로 cd를 통해 이동한 후 

'mongoimport 파일명.타입 '  을 입력해줍니다. 

그렇게 되면 파일이 import 가 됩니다.

 

확인해 보려면 새로운 cmd 창을 열어줍니다.

그리고 mongo를 입력해줍니다.그러면 이제 데이터를 보고 편집이 가능해집니다. 우선 지정하지 않았을 경우 default인 test 데이터베이스에 import되기 때문에 use test를 입력해줍니다. 

 

그  후 입력된 데이터를 확인하기 위해 db.books.find()  (여기서 books는 import 한 파일명입니다.)

보시면 굉장히 복잡하게 나온것을 볼 수 있습니다. 좀더 예쁘게 보기 위해

db.books.find().pretty()를 입력해줍니다. 

 

이런식으로 좀더 보기 예쁘게 나옵니다 :D

 


1. MongoDB 인덱스 생성하기 및 weight 주기

 

이번에는 인덱스를 주겠습니다.

db.books.createIndex({title:'text',shortDescription:'text',longDescription:'text'},{weights:{title:10, shortDescription:5, longDescription:1}})

 

인덱스를 줄때는 createIndex를 통해 가능합니다.

{title:'text',shortDescription:'text',longDescription:'text'} 이 부분은 title, shortDescription, longDescription 부분에 text로 인덱스를 주라는 의미입니다. 

 

{weights:{title:10, shortDescription:5, longDescription:1}} 이 부분은 각 인덱스에 적용할 weight값을 지정하는 것입니다, 예를 들어 인덱스를 통해 'bread'란 단어가 있는 데이터를 검색할때 title에 해당 단어가 있는 것이 다른 곳보다 중요할 경우 이렇게 가중치를 조정하여 줌으로써 적용이 가능합니다!!

 

인덱스를 생성시 보통 검색시 유용하지만! 이 인덱스 자체도 상당한 저장공간을 차지하는 경우가 많아 효율적으로 사용해야 합니다.  그럼 인덱스가 얼마나 크기를 차지하고 있는지 확인하기 위해 

 

db.books.stats()

 

명령을 입력하여 줍니다. 

그러면 index의 총 크기를 볼 수 있습니다. 

 

그러면 이번에는 생성한 인덱스를 활용하여 검색을 해보겠습니다.

db.books.find({$text:{$search:'MongoDB in Action'}},{title:1})

검색시에는 find를 사용하여 가능합니다. 

$text 는 text인덱스를 사용한다는 의미입니다.

{$search:'MongoDB in Action'} 의 의미는 그래서 인덱스를 통해 찾기를 할건데 ''안에 있는 것을 포함한 데이터를 찾아줘! 라는 의미입니다.

 

여기서 주의할점은 ''안에는 띄어쓰기를 기준으로 or로 연산이 진행됩니다. 즉 예시를 기준으로 'MongoDB','in','Action'중 하나라도 포함된 데이터는 추출이 됩니다.

 

만약 and로 추출하고 싶으시다면 " " 를 이용하시면 됩니다!

 

마지막으로 아까 weight를 활용하는 법을 말씀드리겠습니다.

만약 아까 지정한 weight를 기준으로 score를 매겨 그 score가 높은 순으로 데이터를 정렬하여 뽑고 싶다면

 db.books.find({$text:{$search:'MongoDB in Action'}},{title:1,score:{$meta:"textScore"}}).limit(10).sort({score:{$meta:"textScore"}})

이런식으로 입력해주시면 됩니다. 

 

오늘은 mongodb에서 파일불러오기 및 인덱스 생성하기에 대하여 리뷰해보았습니다!