docker에 설치한 MongoDB 서버로 연결이 안 되는 경우
docker에 MongoDB를 설치한 경우,
C:\> docker pull mongo
// docker run -d -p 27017:27017/tcp --name mongodb_inst --rm -it mongo
// docker exec --name mongodb_inst /bin/bash
(저처럼) 무심코 ^^; 27017 포트로 연결을 시도하면 다음과 같은 오류 메시지를 보게 되는데요.
failed to connect to server [127.0.0.1:27017] on first connect
[MongoError: connect ECONNREFUSED 127.0.0.1:27017]
이유는, 포트 매핑이 어떻게 되어 있는지 확인해 보면 됩니다. ^^
C:\> docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cf00331fdcbd mongo:latest "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:32768->27017/tcp mongo
윈도우용의 압축 파일을 해제한 경우의 서비스 구동 방법
// 콘솔 실행 시 (대상이 되는 dbpath, 아래의 예에서는 d:\mongo\db 디렉터리를 미리 생성)
(기본 dbpath는 mongodb가 설치된 드라이브의 "\data\db"이므로, 아래의 예에서는 d:\data\db" 디렉터리 생성 후 dbpath 옵션 없이 수행 가능)
d:\mongodb\bin> mongod --dbpath=d:\mongo\db --logpath=d:\mongo\log.txt
// 서비스 등록 시
d:\mongodb\bin> mongod --dbpath=d:\mongo\db --logpath=d:\mongo\log.txt --install
// 서비스 제거
d:\mongodb\bin> mongod --remove
mongo.exe 클라이언트 실행 후 기본 명령어
[데이터베이스 생성]
> use mydb
switched to db mydb
[컬렉션 생성]
> db.createCollection("users")
{ "ok" : 1 }
[컬렉션 확인]
> show collections
users
[문서 삽입]
> db.users.insert({name: "kevin" })
WriteResult({ "nInserted" : 1 })
> db.users.insert({name: "anders", age: 40})
WriteResult({ "nInserted" : 1 })
[문서 찾기]
> db.users.find()
{ "_id" : ObjectId("60f55e6772f24083840d4af6"), "name" : "kevin" }
{ "_id" : ObjectId("60f55ea172f24083840d4af7"), "name" : "anders", "age" : 40 }
// ObjectId: 문서 추가 시 _id 필드를 지정하지 않은 경우 default 값 체계
// 12바이트 - 타임스탬프(4바이트): 1970년 1월 1일 이후 초 단위로 시작한 값 (Sunday, 7 February 2106 06:28:16 GMT까지 표현할 수 있다고.)
// 장비 식별자(3바이트), 프로세스 ID(2바이트), 카운터(3바이트)
[MongoDB 종료]
> use admin
switched to db admin
> db.shutdownServer()
server should be down...
// 공식 참조 문서
; https://docs.mongodb.com/manual/reference/
NoSQL 데이터베이스 타입
- 데이터 모델 설계 방식
1) 문서(Document) 모델: MongoDB,...
2) 키-값(Key-value) 모델
3) 칼럼(Column) 모델
4) 그래프(Graph) 모델
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]