BasicGuide mongoDB
mongoDB 기초문서
사전지식
- mongodb.conf 에서 bindIP 항목은 subnet 또는 netmask 단위로 open 이 불가능합니다.
bindIp: [1.1.1.1, 2.2.2.2, 3.3.3.3]
- ipV6 를 사용하는 경우라면 ipV6 의 문법에 따라 range 형태로 open 할 수 있지만, ipV4 는 불가능합니다.
- 0.0.0.0 을 값으로 사용하면 전체 open 됩니다. OS 에서 제공하는 방화벽을 통해 제어를 해야합니다.
- 기본 socket port 는 27017 입니다.
mongoDB system 관리
데이터베이스 관리
- db 생성 : use PharoStudyMongoDB
- db 확인 : show databases
- db 삭제 : db.dropDatabase() 또는 db.PharoStudyMongoDB.drop()
db 에 사용자 추가
- 일단 use DB이름 으로 DB 를 사용하도록 지정하는것부터 해야한다(use 명령)
- 해당 collection 에 권한을 가지는 사용자를 생성하기
db.createUser({ user: 'username', pwd: 'password', roles: ['readWrite'] })
- 사용자를 관리자권한으로 생성하기(mongoDB 전체에 영향을 끼치는 권한)
db.createUser({ user: 'username', pwd: 'password', roles: ['userAdminAnyDatabase']})
- 해당 collection 에 권한을 가지는 사용자를 생성하기
mongoDB collection 다루기
collection 생성
- collection 을 생성하는 가장 기초적인 방법
db.createCollection("pharoTestCollection");
- collection 생성시 해당 collection 에 option 을 주는 방법
db.createCollection("pharoTestCollection", { capped : false, size : 6142800, max : 10000 });
- capped : true 인 경우 사이즈를 고정시켜, 초과되면 오래된 데이터부터 삭제. true 면 샤딩이 되지 않는다.
- autoIndexId : id자동증가. 향후에 deprecate 될거라고 경고가 나온다(mongoDB 4.x)
- size : 사이즈
- max : 컬렉션에 들어갈 최대 개수
collecion 목록 확인
show collections
collection 삭제
db.pharoTestCollection.drop()
collection 에 데이터 추가
db.pharoTestCollection.insert()
collection 에서 데이터 조회
db.pharoTestCollection.find({"country_string" : "South Korea"})
collection 에서 데이터 update(찾을인자,바꿀인자)
인자의 순서는 찾을인자,바꿀인자 순서입니다.
- 조건에 맞는 데이터의 특정 field 만 데이터를 변경하는 경우
db.pharoTestCollection.update({"user_name" : "Peter 1"}, {$set:{"date_of_join" : "09/08/2019"}}, {multi:true})
- 조건에 맞는 데이터의 전체 JSON 데이터를 변경하는 경우
db.pharoTestCollection.update({"user_name" : "Peter 1"}, { "country_string" : "South Korea", "user_name" : "Peter 1" ,"date_of_join" : "09/08/2019", "category_name" : ["MODERN MUSIC", "CLASSICAL MUSIC","WESTERN MUSIC"] })
collection 에서 데이터 삭제
createCollection 에서 capped 가 false 인 경우에만 사용가능한 명령입니다.
- 해당 collection 의 모든 데이터를 삭제하는 경우
db.pharoTestCollection.remove({})
- 해당 collection 에서 조건에 맞는 데이터를 3개만 지우는 경우
db.pharoTestCollection.remove({"country_string" : "South Korea"}).limit(3)
특정 collection 에 데이터 1개 추가
db.pharoTestCollection.insertOne( { "country_string" : "South Korea", "user_name" : "Peter 1" ,"date_of_join" : "15/10/2010", "category_name" : ["MODERN MUSIC", "CLASSICAL MUSIC","WESTERN MUSIC"] } );
참고자료
- https://docs.ncloud.com/ko/database/database-10-3.html
- https://planbs.tistory.com/entry/MongoDB-인증authorization-추가하기
- https://docs.mongodb.com/manual/reference/built-in-roles/
- https://fors.tistory.com/403
- https://blog.ull.im/engineering/2019/04/05/mongodb-indexing-strategy.html
- https://jaehun2841.github.io/2019/02/20/2019-02-20-mongodb-1/#mongodb-crud-operation
- https://docs.mongodb.com/manual/core/replica-set-rollbacks/
- https://jaehun2841.github.io/2019/02/20/2019-02-20-mongodb-1/#insert-sql-vs-mongo-db-insert