ABOUT ME

관심지식인 주식/정보처리기술사/IT개발/AI 관련 자료를 모아둔 지식창고 입니다.

Today
Yesterday
Total
  • [MongoDB] 강좌 2편: Database/Collection/Document 생성·제거
    BigData 2021. 3. 24. 14:33
    728x90
    반응형

    [MongoDB] 강좌 2편: Database/Collection/Document 생성·제거

    2016년 2월 15일 velopertdev.log / mongodb / tech.log17 Comments

     

    이번 강좌에서는 Database, Collection, Document 를 생성하는 명령어와 제거하는 명령어를 배워보도록 하겠습니다. 이 세가지 키워드의 관계는 아래 이미지와 같습니다. 이 단어들이 생소하신분은 전 강좌를 읽어주세요.

    Database 생성: use

    use DATABASE_NAME 명령어를 통하여 Database를 생성 할 수 있습니다.
    생성 후, 생성된 데이터베이스를사용하게 되구요,  데이터베이스가 이미 존재하는 경우엔 현존하는 데이터베이스를 사용합니다.

    예제: mongodb_tutorial 이라는 데이터베이스를 생성합니다.

    > use mongodb_tutorial switched to db mongodb_tutorial

    현재 사용중인 데이터베이스를 확인하려면 db 명령어를 입력하세요.

    > db mongodb_tutorial

    내가 만든 데이터베이스 리스트들을 확인하려면 show dbs 명령어를 입력하세요.

    > show dbs local 0.000GB

    엥?! 방금 만든 mongodb_tutorial 이 없죠?
    리스트에서 방금 만든 데이터베이스를 보려면 최소 한개의 Document를 추가해야합니다.

    > db.book.insert({"name": "MongoDB Tutorial", "author": "velopert"}); WriteResult({ "nInserted" : 1 }) > show dbs local 0.000GB mongodb_tutorial 0.000GB

    * 여기서 book 은 Collection 입니다. 따로 Collection 을 미리 생성하지 않아도
    위처럼 명령어를 작성하는데 차질이 없습니다.

    Database 제거: db.dropDatabase()

    Database를 제거할땐 db.dropDatabase() 명령어를 사용합니다.

    이 명령어를 사용하기 전, use DATABASE_NAME 으로 삭제하고자 하는 데이터베이스를 선택해줘야합니다.

    예제: mongodb_tutorial 데이터베이스를 제거합니다.

    > use mongodb_tutorial switched to db mongodb_tutorial > db.dropDatabase(); { "dropped" : "mongodb_tutorial", "ok" : 1 }

     

    Collection 생성: db.createCollection()

    Collection을 생성할때는 db.createCollection(name, [options]) 명령어를 사용합니다.

    name 은 생성하려는 컬렉션의 이름이며 option 은 document 타입으로 구성된 해당 컬렉션의 설정값입니다.
    options 매개변수는 선택적인(Optional) 매개변수로서 생략하셔도 되고, 필요에따라 사용하면 됩니다.

     

    Option: 

    FieldType설명

    capped Boolean 이 값을 true 로 설정하면 capped collection 을 활성화 시킵니다. Capped collection 이란, 고정된 크기(fixed size) 를 가진 컬렉션으로서, size 가 초과되면 가장 오래된 데이터를 덮어씁니다. 이 값을 true로 설정하면 size 값을 꼭 설정해야합니다.
    autoIndex Boolean 이 값을 true로 설정하면, _id 필드에 index를 자동으로 생성합니다. 기본값은 false 입니다.
    size number Capped collection 을 위해 해당 컬렉션의 최대 사이즈(maximum size)를 ~ bytes로 지정합니다.
    max number 해당 컬렉션에 추가 할 수 있는 최대 갯수를 설정합니다.

     

    예제1 : test 데이터베이스에 books 컬렉션을 옵션없이 생성합니다.

    > use test switched to db test > db.createCollection("books") { "ok" : 1 }

    예제2: test 데이터베이스에 articles 컬렉션을 옵션과 함께 생성합니다.

    > db.createCollection("articles", { ... capped: true, ... autoIndex: true, ... size: 6142800, ... max: 10000 ... }) { "ok" : 1 }

    예제3: 따로 createCollection() 메소드를 사용하지 않아도 document를 추가하면 자동으로 컬렉션이 생성됩니다.

    > db.people.insert({"name": "velopert"}) WriteResult({ "nInserted" : 1 })

    내가 만든 collection 리스트를 확인하려면 show collections 명령어를 입력하세요.

    > show collections articles books people

     

    Collection 제거: db.COLLECTION_NAME.drop()

    Collection을 제거 할 땐 drop()  메소드를 사용합니다.

    당연히, 이 명령어를 제거하기 전, 사용 할 데이터베이스를 우선 설정해야겠죠?

    예제: test 데이터베이스의 people 컬렉션을 제거합니다.

    > use test switched to db test > show collections articles books people > db.people.drop() true > show collections articles books

     

    Document 추가: db.COLLECTION_NAME.insert(document)

    insert() 메소드를 사용하여 Document를 추가 할 수 있습니다.

    이 명령어를 사용하기 전 데이터를 추가 할 데이터베이스를 선택해주어야합니다.

    배열형식의 인자를 전달해주면 여러 다큐먼트를 동시에 추가 할 수 있습니다.

    예제1: 한개의 다큐먼트를 books 컬렉션에 추가합니다.

    > db.books.insert({"name": "NodeJS Guide", "author": "Velopert"}) WriteResult({ "nInserted" : 1 })

    예제2:  두개의 다큐먼트를 books 컬렉션에 추가합니다. (가독성을 위해 여러줄로 작성되었습니다.)

    > db.books.insert([ ... {"name": "Book1", "author": "Velopert"}, ... {"name": "Book2", "author": "Velopert"} ... ]); BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })

    컬렉션의 다큐먼트 리스트를 확인할때는 db.COLLECTION_NAME.find() 명령어를 사용하세요.

    > db.books.find() { "_id" : ObjectId("56c08f3a4d6b67aafdeb88a3"), "name" : "MongoDB Guide", "author" : "Velopert" } { "_id" : ObjectId("56c08f474d6b67aafdeb88a4"), "name" : "NodeJS Guide", "author" : "Velopert" } { "_id" : ObjectId("56c0903d4d6b67aafdeb88a5"), "name" : "Book1", "author" : "Velopert" } { "_id" : ObjectId("56c0903d4d6b67aafdeb88a6"), "name" : "Book2", "author" : "Velopert" }

     

    Document 제거: db.COLLECTION_NAME.remove(criteria, justOne)

    remove(criteria, justOne) 메소드를 사용하여 Document를 제거 할 수 있습니다.
    이 메소드에는 두가지의 매개변수가 있는데요,

    parametertype설명

    *criteria document 삭제 할 데이터의 기준 값 (criteria) 입니다. 이 값이 { } 이면 컬렉션의 모든 데이터를 제거합니다.
    justOne boolean 선택적(Optional) 매개변수이며 이 값이 true 면 1개 의 다큐먼트만 제거합니다. 이 매개변수가 생략되면 기본값은 false 로 서, criteria에 해당되는 모든 다큐먼트를 제거합니다.

    이 강좌에선 criteria 에 부분에선 특정 field 의 값이 매칭하는 경우만 배워보도록 하겠습니다.  criteria 에 대한 자세한 내용은 다음 강좌에서 다뤄보겠습니다.

    다큐먼트 추가 부분에서 find() 메소드를 잠깐 사용했었는데, 이 메소드 역시 criteria를 인수로 전달 할 수 있습니다.  다큐먼트를 제거하다가 실수를 하지 않도록 초보일땐, 제거전에는 find() 를 먼저 해서 확인하는걸 습관화하세요.

    예제: books 컬렉션에서 “name”이 “Book1” 인 다큐먼트를 제거

    > db.books.find({"name": "Book1"}) { "_id" : ObjectId("56c097f94d6b67aafdeb88ac"), "name" : "Book1", "author" : "Velopert" } > db.books.remove({"name": "Book1"}) WriteResult({ "nRemoved" : 1 }) > db.books.find() { "_id" : ObjectId("56c08f3a4d6b67aafdeb88a3"), "name" : "MongoDB Guide", "author" : "Velopert" } { "_id" : ObjectId("56c08f474d6b67aafdeb88a4"), "name" : "NodeJS Guide", "author" : "Velopert" } { "_id" : ObjectId("56c097f94d6b67aafdeb88ad"), "name" : "Book2", "author" : "Velopert" }

     

    마무리하며..

    이번 강좌에서는 MongoDB 커맨드라인 위에서 Database, Collection 그리고 Document 를 추가하고 제거하는것에 대하여 배웠습니다. 다음 강좌에서는 Document 를 Query(조회/검색) 하는 메소드인 find() 메소드에 대하여 자세히 알아보도록 하겠습니다.

    728x90
    반응형
Designed by Tistory.