데이터베이스- 데이터를 저장하는 공간
NoSQL을 사용하는 이유 -> 보안에 약해 , 속도가 빠름
가장 큰 이유는 성능 때문입니다.
관계형 데이터베이스는 시스템의 신뢰도를 높이는데 필요한 장치를 많이 가지고 있습니다.
SQL문을 읽고 실행하는데 많은 리소스를 사용하며 성능이 떨어지는 경우가 많습니다.
반대로 NoSQL은 성능을 최우선으로 생각하여 실시간으로 처리해야 할 경우나 대용량 트래픽을 감당할 수 있는
메시징 시스템등에 활용됩니다.
mongoDB 환경설정
파일탐색기 -> 내 PC -> 마우스 오른쪽 버튼(속성) -> 고급 시스템 설정
-> 환경 변수 -> 시스템 변수 -> path -> 편집-> 새로 만들기-> C:\Program Files\MongoDB\Server\4.4\bin
(mongoDB 실행파일 위치)
확인
cmd -> mongo
MongoDB 문법
데이터베이스 확인
show dbs;
데이터베이스 생성 및 선택
use 데이터베이스명;
use fontenddb;
* 데이터베이스가 없으면 생성, 있으면 선택합니다.
* 데이터베이스의 자료가 없을 경우 show dbs에서 나타나지 않습니다.
컬렉션 생성
db.createCollection('컬렉션명');
db.createCollection('testCollection');
컬렉션 확인
show collections;
컬렉션 삭제
db.컬렉션명.drop();
db.testCollection.drop();
연습용 컬렉션 만들기
db.createCollection("member");
document 추가
db.컬렉션명.insert(객체);
db.member.insert({'userid':'apple','userpw':'1111'});
db.member.insert({'userid':'banana','userpw':'2222','username':'반하나'});
db.member.insert({"userid":"orange","userpw":"3333","gender":"남자"});
db.member.insert({"userid":"melon","userpw":"4444","gender":"남자", "username":"이메론"});
db.member.insert({"userid":"cherry","userpw":"5555", "username":"채리","gender":"여자","point":2000});
db.member.insert({"userid":"avocado","userpw":"6666", "username":"안카도","gender":"남자","point":1500});
db.member.insert({"userid":"berry","userpw":"7777", "username":"배애리","gender":"여자","point":1800});
db.member.insert({"userid":"coconut","userpw":"8888", "username":"고코넛","gender":"남자","point":1700});
* _id는 각 document의 유일한 키로 쓰이는 값입니다.
document 확인
db.컬렉션명.find();
db.컬렉션명.find().pretty();
db.컬렉션명.find(객체).pretty();
db.member.find();
db.member.find().pretty();
db.member.find({"userid":"apple"}).pretty();
document 비교연산
$eq : 주어진 값과 일치하는 값을 찾습니다.
$gt : 주어진 값보다 큰 값을 찾습니다.
$gte : 주어진 값보다 크거나 같은 값을 찾습니다.
$lt : 주어진 값보다 작은 값을 찾습니다.
$lte : 주어진 값보다 작거나 같은 값을 찾습니다.
$ne : 주어진 값과 일치하지 않는 값을 찾습니다.
$in : 주어진 배열 안에 속하는 값을 찾습니다.
$nin : 주어진 배열 안에 속하지 않는 값을 찾습니다.
문제.
포인트가 1700점 이상인 멤버를 검색합니다.
db.member.find({point:{$gte:1700}}).pretty();
document 논리연산
$or : 주어진 조건 중 하나라도 true일 때 true인 결과를 찾습니다.
$and : 주어진 모든 조건이 true일 때 true인 결과를 찾습니다.
$not : 주어진 조건이 false일 때 true, true일 때 false인 결과를 찾습니다.
문제.
아이디가 "melon"이고 이름이 "이메론"인 멤버를 검색합니다.
db.member.find({$and:[{"userid":"melon"},{"username":"이메론"}]}).pretty();
실습.
1. 이름이 "안카도"인 멤버를 검색합니다.
db.member.find({"username":"안카도"}).pretty();
2. 포인트가 1800보다 작거나 같은 멤버를 검색합니다.
db.member.find({"point":{$lte:1800}}).pretty();
3. 아이디가 "apple" 이거나 "banana"인 멤버를 검색합니다.
db.member.find({$or:[{"userid":"apple"},{"userid":"banana"}]}).pretty();
4. 성별이 "여자"이고 포인트가 1700이상인 멤버를 검색합니다.
db.member.find({$and:[{"gender":"여자"},{"point":{$gte:1700}}]}).pretty();