mongoDB는 NoSQL이다. 자유로운 데이터를 다루기에 좋습다. 스키마를 자유롭게 수정할 수 있기 때문에 어떤 형식으로 데이터가 들어올지 예상할 수 없을 때 좋다. MySQL과는 그 계층(?)이 다른데 정리해보자면 이렇습니다.
MySQL : DB(스키마) - 테이블 - 로우
MongoDB : DB - 컬렉션 - 도큐먼트
MySQL의 계층과 일치하는 것은 아니지만 MongoDB는 다음과 같은 구조를 가지고 있습니다.
DB는 캐비넷 컬렉션은 폴더, 도큐먼트는 폴더 내에 든 서류라고 생각합시다. 도큐먼트는 BSON 구조를 가집니다. JSON을 변형한 것입니다.
(https://javacpro.tistory.com/64) 설치시 참고 블로그
우선 위 홈페이지에 가서 Community Server를 다운로드 받고 (Compass도 자동 설치됩니다.) 환경 변수에도 추가해주자. MySQL에서 한 것과 같은 방법으로 추가하면 된다.
C:\Program Files\MongoDB\Server\[몽고 DB 버전]\bin
을 path에 추가해주면 된다.
환경변수까지 등록했다면 다음 명령어를 실행해보자
mongod //mongod 인스턴스 실행
mongod는 MongoDB의 주요 데몬 프로세스로 코어 데이터베이스 서버를 구동시킨다. 간단하게는 mongod는 데이터베이스에 접속할 수 있게 해준다고 보자.
실행하면 다음과 같은 사항들을 확인할 수 있다. pid 1556, dbpath는 C:\data\db\이고 mongoDB 버전은 4.2.2. 등등.
현재 NonExistentPath 오류가 뜨는데 몽고DB가 직접 만들어주지 않으므로 C:/data/db/를 직접 만들어줘야 한다. 만약 이 경로가 아닌 다른 경로를 사용하고 싶다면 mongod --dbpath [경로] 명령어를 통해 등록해주자.
mongod
이제 mongod를 입력하면 27017 포트에서 대기 중이라고 뜨는 것을 볼 수 있다.
로컬에서 해당 포트로 접근해보면 다음과 같은 문구를 확인할 수 있다.
그 이후에는 mongo 명령어를 통해 접속할 수 있다.
mongo //mognDB에 접속
mongoDB CLI 명령어를 알아보...려고 했는데 상당히 내용이 길어져서 다른 포스트로 분리하였습니다. 해당 명령어들을 잘 모르겠으면 MongoDB 공식 문서를 참고하도록 합시다.
mongo를 실행시킨 뒤 DB와 관련된 명령어만 사용할 수 있는 것은 아닙니다. 변수를 설정할 수도 있습니다.
이러한 방법을 통해 반복되는 사항을 쉽게 입력할 수도 있습니다.
freeboard_result = db.board.insertOne({name: "자유게시판"})
freeboard_id = freeboard_result.insertedId
db.article.insertOne([{board_id: freeboard_id, title: "whar are you looking at?"}])
mongo에 접속후에는 관리자 계정을 생성해줍시다.
db에 아무것도 설정하지 않았음에도 존재하는 default db가 여러개 있는데 그 중 admin은 사용하는 유저에 관련된 정보를 담고 있습니다.
use admin // admin db 사용
db.createUser({user: "root", pwd: "비밀번호", roles: ['root']})
이제 mongo admin -u [이름] -p [비밀번호]를 통해 접속할 수 있습니다.
'DB, ORM > 🍃 mongoDB (shell)' 카테고리의 다른 글
원자성을 유지를 위한 Transaction(트랜잭션) + WriteConcern/ReadConcern (0) | 2020.07.24 |
---|---|
Robo 3T 설치 및 활용 (0) | 2020.06.08 |
ubuntu에서 mongodb 설치하기 (0) | 2020.06.08 |
mongoDB 유저 생성 + shell 명령어 + 원자성 + cursor & batch (0) | 2020.04.06 |
Capped 컬렉션 (0) | 2020.04.06 |