본문 바로가기
TIL/디지털트윈

05.03 디지털 트윈 부트캠프 16일차

by saramnim 2023. 5. 3.
728x90
database

MongoDB

MongoDB와 Mongo Shell을 깔고 각각 폴더를 들어가보면 bin 폴더를 찾을 수 있다.

그 bin 폴더를 고급 시스템 설정에 가서 환경 변수 path에 경로를 새로 추가해줘야 한다.

그 다음 cmd에서 mongosh를 입력해주자!

cmd에서 mongosh를 입력하면 길게 뭐라고 뜨면서 헤더가 test로 바뀐다.

그렇다면 제대로 설치된 것이다~!

 

mongodb compass를 열면 localhost 서버로 연결할 수 있는 connect 버튼을 누르자.

connect를 누르면 

왼쪽 상단에 localhost:27017이 위와 같이 뜬다면 잘 연결된 것이다.

왼쪽 사이드 바 Databases 오른쪽에 +버튼을 누르면 새로운 DB를 생성할 수 있다.

1 개의 DB 안에 여러 개의 collection을 생성할 수 있다.

DB와 collection을 생성한 뒤, ADD DATA를 누르면 파일을 집어넣을 수 있다~!~!

 

 

CMD에서 mongosh 다루기

cmd에서 mongosh를 입력하면 길게 뭐라고 뜨면서 헤더가 test로 바뀐다.

use 데이터베이스명

위와 같이 입력하면 내가 mongodb에서 만든 해당 데이터베이스로 헤더가 바뀐다.

db.컬렉션명.find()

를 사용하면 해당 DB의 해당 컬렉션에서 find 조건에 해당하는 요소들을 볼 수 있다.

예를 들어 db.books.find() 를 입력하면 해당 컬렉션의 모든 요소들이 출력된다.

 db.books.find({"reviews.name":{$regex:'Kim',"$options":'i'}})

위 내용을 입력하면 reviews.name이 대소문자를 구분하지 않아 Kim 또는 kim이 포함된 요소들이 출력된다.

db.books.find({"reviews.name":/kim/i})

위 두 코드는 같은 결과를 출력한다.

즉, 같은 의미를 내포한다.

 

db.books.find({ "genres":{$regex:/^a/}})

db.books.find({title :{$regex:/^A/} })

위 두 코드는 각각 a 또는 A로 시작하는 genres와 tilte을 조건으로 결과를 출력한다.

 

db.books.find({title :{$regex:/The Odyssey [1,3]/}})

The Odyssey로 시작하는 요소 중 뒤에 1~3의 숫자가 있는 요소들이 출력된다.

즉 title이 The Odyssey 1,  The Odyssey 2,  The Odyssey 3이 포함된 것들이 출력된다.

db.books.find({title :{$regex:/The odyssey [1-3]/i}})

대소문자 상관 x

db.books.find({title :{$regex:/The odyssey [1-3]/i,$not:/The Odyssey 2/}})

 The Odyssey 2를 포함하지 않는 위의 결과값

 

db.schools.find({zipcode:"63109"},{students:{$elemMatch:{school:102}}})

zipcode가 63109이고 students의 school이 102인 요소

db.schools.find({zipcode:"63109"},{students:{$elemMatch:{school:102, age:{$gt:10}}}})

gt greater than ~보다 크다

gte greater than equal ~보다 크거나 같다

lt letter than ~보다 작다

lte letter than equal ~보다 작거나 같다

 

db.books.insertMany([])

여러 요소들을 삽입할 수 있다.

 

db.books.find({ $or:[ {pages : {$lt:200} },{ pages:{$gt:800}}]}).count()

or는 어느 언어에서나 마찬가지로 또는 이라는 의미를 가진다.

즉, pages가 200~800인 요소를 찾고 갯수를 센 값을 출력한다.

 

db.books.find({ $and:[ {rating:{ $gt:6}}, {pages:{ $gt:700}}]})

and 또한 그리고~ 라는 의미로 두 조건이 모두 해당되는 요소를 출력한다.

 

db.books.find({ rating: {$not:{ $lte:10}}})

rating이 10보다 같거나 작은 것 뿐만 아니라 rating 속성이 없는 것도 함께 검색된다.

 

정리하자면,

$eq     =    해당 값과 같은 값
$gt     >    해당 값보다 큰 값
$gte    >=   해당 값보다 크거나 같은 값
$in          or 같은 느낌, 요소 중에 인수가 포함된 요소를 출력
$lt     <    해당 값보다 작은 값
$lte    <=   해당 값보다 작거나 같은 값
$ne     !=   해당 값과 같지 않은 값
$nin         not in, 인수 값을 포함하지 않는 나머지 요소

 

db.books.find({genres:{$all: ["fantasy","fairy tale"]}})

genres가 fantasy, fairy tale을 포함한 모든 요소를 검색

 

db.books.find({ reviews:{$exists :true}})

reviews 필드가 존재하는 요소를 출력

속성에 값 대신 null로 들어간 경우 true 출력

 

db.bank.find({ $expr: {$gt:["$balance","$debt"]}})

expr는 두 개의 값을 비교한다.

위의 경우 balance가 debt보다 큰 경우만 검색한다.

728x90
반응형

댓글

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."