mongoDB는 스키마가 없는 비정형 DB이다. foreign key와 같이 관계를 주기 어렵기 때문에 join같은것도 어렵다. 여기서 mongodb의 기본적인 사용법에 대해 살펴보도록 한다. 초기에 보안성이 없어 해킹에 대상이 되므로 인증 암호를 꼭 설정하길 바란다.
먼저 AWS EC2에 node와 mongoDB를 운영하고 있다면 외부에서 접속하기 위해 다음과 같은 문법을 사용한다.
mongodb://{YOURUSERNAME}:{YOURPASSWORD}@{IP 또는 HOSTNAME}/{YOURDB_NAME}
물론 운영 서버에 포트 번호 27017에 대한 inbound rules를 준다. 보안을 위해 다른 포트번호로 변경할 수도 있다. /etc/mongod.conf를 편집하도록 한다.
mongoDB를 윈도우에서 테스트 중이라면 다음과 같이 실행할 수 있다.
mongod --dbpath F:\MongoData\ --logpath F:\MongoLogs\mongolog.log
물론 관련 경로는 만들어 둬야 한다. 윈도에서 새 커멘드 창을 띄우고 다음과 같이 테스트 할 수 있다.
C:\my_mongo_dir\bin> mongo >db test > db.foo.insert( { a : 1 } ) > db.foo.find() { _id : ..., a : 1 } > show dbs ... > show collections ... > help
윈도우에서 서비스로서 시작하려면 다음과 같다.
C:\> mongod --dbpath F:\MongoData\ --logpath F:\MongoLogs\mongolog.log --logappend --install C:\> net start MongoDB
db.users.insert( {user_id: "abc123", age: 55, status: "A"} )
여기서 db.users.insert()의 가운데 users 는 테이블이 된다. 그리고 테이블이 저절로 생성되면서 데이터가 들어간다. 필드도 원하는 만큼 넣을 수 있다.
db.users.find()
해당 컬렉션의 모든 데이터가 출력 된다. 만일 특정 필드의 조건을 주려면 다음과 같다.
db.users.find({age: "21"})
또한 구간을 지정해서 조회를 원한다면 $gt 와 $lt , $gte 와 $lte 가 있다. $gt는 초과, $lt 는 미만 , $gte는 이상, $lte 는 이하를 검색한다. 아래의 예제는 age필드의 값이 20을 초과($gt)하고 user_id , age 필드 데이터만을 출력하는 예제이다.
db.users.find( {age:{$gt:20}}, {user_id:1, age:1, _id:0} )
db.users.find({age:{$gt:20}},{user_id:1, age:1, _id:0}).sort({age:-1})
해당 필드의 값을 오름차순일 경우엔 필드명으로 오름차순이 된다. 내림차순일 경우 해당 필드:-1 을 넣어주면 된다.
db.users.update( {user_id:"abc123"}, {$set:{age:10}} )
위 예제는 user_id 가 abc123 일 경우 age를 10으로 변경한다.
db.users.update( {age:5}, {$set:{user_id:"AAA"}}, true )
age가 5일경우 user_id를 AAA로 셋 하며 없으면 insert 하게 된다. (마지막에 true)
db.user.remove( {user_id:"abc123"} )
update와 같은 방식으로 조건등을 넣어 삭제할 수 있다.
"어떤 것을 완전히 알려거든 그것을 다른 이에게 가르쳐라."
- Tryon Edwards -