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보다 큰 경우만 검색한다.
'TIL > 디지털트윈' 카테고리의 다른 글
프로젝트 (4) (3은 내가 수업을 빼먹음!(코로나!)) (0) | 2023.05.04 |
---|---|
05.04 디지털 트윈 부트캠프 17일차 (0) | 2023.05.04 |
05.02 디지털 트윈 부트캠프 15일차 (0) | 2023.05.02 |
05.01 디지털 트윈 부트캠프 14일차 (0) | 2023.05.01 |
04.24~28 디지털 트윈 부트캠프 9~13일차 (3) (0) | 2023.04.30 |
댓글