MongoDB에 여러 데이터를 넣어보자(Insert & Import)

Jamie·2020년 12월 2일
0

MongoDB

목록 보기
6/8
post-thumbnail

선행작업

mongoDB 접속

$ mongosh mongodb://localhost:27017/testDB?authSource=admin --username jamie

insertMany()로 데이터 여러개 넣기

  • 넣을 데이터

    db.inventory.insertMany( [
       { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" },
       { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" },
       { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" },
       { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" },
       { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" }
    ]);
  • 넣은 데이터

    > db.inventory.insertMany( [
    ...    { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" },
    ...    { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" },
    ...    { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" },
    ...    { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" },
    ...    { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" }
    ... ]);
    {
      acknowledged: true,
      insertedIds: {
        '0': ObjectId("5fc7073b3085257df0982753"),
        '1': ObjectId("5fc7073b3085257df0982754"),
        '2': ObjectId("5fc7073b3085257df0982755"),
        '3': ObjectId("5fc7073b3085257df0982756"),
        '4': ObjectId("5fc7073b3085257df0982757")
      }
    }

insertOne() VS insertMany()

  • insertOne() LINK
    • 한 건의 Document 삽입
    db.inventory.insertOne(
       { "item" : "canvas",
         "qty" : 100,
         "tags" : ["cotton"],
         "size" : { "h" : 28, "w" : 35.5, "uom" : "cm" }
       }
    )
  • insertMany()
    • 여러 건(1건 이상)의 Document를 한 번에 삽입(iterable한 [ ] 사용)
    db.inventory.insertMany([
       { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" }
       ])

mongoImport

분명 가이드엔 mongoDB 설치시에 같이 설치된다고 했지만 아무리 찾아봐도 없다! 찾아보니 버전마다 다르지만, 최근 버전에는 포함되어있지 않아서 별도로 다운로드를 해야했다. Database-tool을 다운받으면 mongoimport는 물론이고, bsondump, mongodump, mongoexport 등의 실행 파일들이 다운로드 받아지는데 이를 모두 기존 설정했던 환경변수 위치에 넣어주고 source로 반영해주었다.

  • MongoDB 인스턴스로 데이터를 대량으로 가져오는 방법

  • json 파일이 필요

    • 다음 파일을 inventory.json으로 저장하자
    $ vi inventory.json # 저장하기
    { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" }
    { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" }
    { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" }
    { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" }
    { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" }
    
    $ cat inventory.json # 확인하기
    { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" }
    { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" }
    { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" }
    { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" }
    { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" }
  • import 명령어

    $ mongoimport --db <db name> --collection <collection name> \
           --authenticationDatabase admin --username <user> --password <password> \
           --drop --file <file path(절대/상대 모두 가능)>
    
    # 고치면 - 암호는 제외하고 따로 입력받았다!
    $ mongoimport --db testDB --collection inventory \
           --authenticationDatabase admin --username jamie \
           --drop --file ./inventory.json
    Enter password:
    
    2020-12-02T16:15:21.264+0900	connected to: mongodb://localhost/
    2020-12-02T16:15:21.264+0900	dropping: testDB.inventory
    2020-12-02T16:15:21.328+0900	5 document(s) imported successfully. 0 document(s) failed to import.
    • drop 옵션이 기존 컬렉션의 내용을 날리는 건가보다! 기존 데이터가 싹 날아갔다.
  • 파일을 잘 읽어서 데이터를 넣은 것을 확인할 수 있다!

    > use testDB
    > db.inventory.find({})
    [
      {
        _id: ObjectId("5fc73f0993426845fee7ba69"),
        item: 'journal',
        qty: 25,
        size: { h: 14, w: 21, uom: 'cm' },
        status: 'A'
      },
      {
        _id: ObjectId("5fc73f0993426845fee7ba6a"),
        item: 'postcard',
        qty: 45,
        size: { h: 10, w: 15.25, uom: 'cm' },
        status: 'A'
      },
      {
        _id: ObjectId("5fc73f0993426845fee7ba6b"),
        item: 'notebook',
        qty: 50,
        size: { h: 8.5, w: 11, uom: 'in' },
        status: 'A'
      },
      {
        _id: ObjectId("5fc73f0993426845fee7ba6c"),
        item: 'paper',
        qty: 100,
        size: { h: 8.5, w: 11, uom: 'in' },
        status: 'D'
      },
      {
        _id: ObjectId("5fc73f0993426845fee7ba6d"),
        item: 'planner',
        qty: 75,
        size: { h: 22.85, w: 30, uom: 'cm' },
        status: 'D'
      }
    ]

출처

MongoDB 공식 가이드 - https://docs.mongodb.com/guides/server/read_queries/
MongoDB 공식 가이드(import) - https://docs.mongodb.com/guides/server/import/

profile
성장중인 제이미입니다.

0개의 댓글