BasicGuide mongoDB

From 흡혈양파의 인터넷工房
Jump to navigation Jump to search

mongoDB 기초문서

사전지식

  1. mongodb.conf 에서 bindIP 항목은 subnet 또는 netmask 단위로 open 이 불가능합니다.
    1. bindIp: [1.1.1.1, 2.2.2.2, 3.3.3.3]
    2. ipV6 를 사용하는 경우라면 ipV6 의 문법에 따라 range 형태로 open 할 수 있지만, ipV4 는 불가능합니다.
    3. 0.0.0.0 을 값으로 사용하면 전체 open 됩니다. OS 에서 제공하는 방화벽을 통해 제어를 해야합니다.
    4. 기본 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']})


mongoDB collection 다루기

collection 생성

  1. collection 을 생성하는 가장 기초적인 방법
    • db.createCollection("pharoTestCollection");
  2. 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"] } );


참고자료