mongodb 기본 사용

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

기본 사용법

insert

db.users.insert( {user_id: "abc123", age: 55, status: "A"} )

여기서 db.users.insert()의  가운데 users 는 테이블이 된다. 그리고 테이블이 저절로 생성되면서 데이터가 들어간다. 필드도 원하는 만큼 넣을 수 있다. 

find

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} )

sort

db.users.find({age:{$gt:20}},{user_id:1, age:1, _id:0}).sort({age:-1})

해당 필드의 값을 오름차순일 경우엔 필드명으로 오름차순이 된다. 내림차순일 경우 해당 필드:-1 을 넣어주면 된다.

update

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)

remove

db.user.remove( {user_id:"abc123"} ) 

update와 같은 방식으로 조건등을 넣어 삭제할 수 있다.

 

 

youngdeok's picture

Language

Get in touch with us

"If you would thoroughly know anything, teach it to other."
- Tryon Edwards -