📕 들어가며

이번 시간에는 NoSQL의 대명사인

MongoDB 에서

CRUD 하는 방법에 대해서 배워보겠습니다.










<참고자료> : MongoDB CRUD

(MongoDB 홈페이지에

document가 정말 잘 정리되어 있더라고요.

제 블로그를 돌아보며 반성 쪼끔했답니다. ^^)












📕 사전준비

✏️ 1. MongoDB 설치

아래 글 참고해서 MongoDB 설치해주세요 ^^

<참고자료> : MongoDB 설치방법










✏️ 2. MongoDB 서버 실행

CMD 창에서 다음과 같이 입력해줍니다.

mongod --dbpath=D:\mongodb\data



<실행결과> : MongoDB 서버가 켜졌습니다.










✏️ 3. MongoDB 실행

CMD 창을 하나 더 열어서 다음과 같이 입력합니다.

mongo



<실행결과> : 이 창에서 실습 진행하면 됩니다.







📕 CRUD 작업


✏️ 1-1. CREATE (하나)

inventory라는 collection(mysql로 치면 테이블)
아이템의 정보를 입력하는 코드입니다..
insertOne의 parameter에 입력할 데이터를
python dictionary처럼 전달해주면 됩니다.

db.inventory.insertOne(
   { 
        item: "canvas", 
        qty: 100, 
        tags: ["cotton"], 
        size: { h: 28, w: 35.5, uom: "cm" },
        status: "A"
    }
)




<실행결과> : 한 건의 데이터가 입력 되었습니다.










✏️ 1-2. CREATE(여러개)

CMD 창에서 다음과 같이 입력하면
여러 개의 데이터가 한 번에 입력됩니다.

db.inventory.insertMany( [
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "mat", qty: 85, size: { h: 27.9, w: 35.5, uom: "cm" }, status: "A" },
   { item: "mousepad", qty: 25, size: { h: 19, w: 22.85, uom: "cm" }, status: "P" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "P" },
   { 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" },
   { item: "sketchbook", qty: 80, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "sketch pad", qty: 95, size: { h: 22.85, w: 30.5, uom: "cm" }, status: "A" }
] );



<실행결과> : 이번에는 9건의 데이터가 한 번에 생성되었습니다.










✏️ 2-1. READ(전체)

이번에는 inventory 컬렉션의 데이터를 전부 조회해보겠습니다.


CMD 창에서 다음과 같이 입력해줍니다.

db.inventory.find({})



<실행결과> : 이전에 입력한 10건의 데이터가 조회되었습니다.










✏️ 2-2. READ(일부)

inventory 컬렉션에서
item이 "canvas"인 데이터를 조회하겠습니다.


CMD 창에서 다음과 같이 입력해줍니다.

db.inventory.find( { item: "canvas" } )

<실행결과> : 이번에는 canvas 아이템만 조회되었습니다.







✏️ 3-1. UPDATE(하나)

updateOne
조건을 만족하는 document 중
제일 처음 등장하는 document를
수정하는 함수입니다.


CMD 창에서 다음과 같이 입력해줍니다.

db.inventory.updateOne(
   { item: "paper" }, // 조건 item이 "paper"인 것
   {
     $set: { "size.uom": "cm", status: "P" }, // 수정할 내용을 key, value 형태로 지정
     $currentDate: { lastModified: true } // 데이터 수정하면서 "lastModified" 열에 수정시간 입력
   }
)



<실행결과> :
in에서 cm으로 바뀌었고,
status가 D에서 P로 바뀌었고,
"lastModified" 열이 추가 되었습니다.











✏️ 3-2. UPDATE(여러개)

updateMany
조건을 만족하는 document를 전부 수정하는 함수입니다.


CMD 창에서 다음과 같이 입력해줍니다.

db.inventory.updateMany(
   { "qty": { $lt: 50 } },  // 조건 qty가 50보다 작은 대상을 
   {
     $set: { "size.uom": "in", status: "P" }, // size.uom을 "in"으로, status를 "P"로 
     $currentDate: { lastModified: true } // 수정일자 찍어주는 옵션
   }
)



<실행결과> : 3건의 데이터가 다음과 같이 수정 되었습니다.











✏️ 4-1. DELETE(하나)

deleteOne
조건을 만족하는 document 중
제일 먼저 등장하는 document를
삭제하는 함수입니다.


CMD 창에서 다음과 같이 입력해줍니다.

// status가 "D"인 데이터 하나 삭제
db.inventory.deleteOne( { status: "D" } ) 



<실행결과> : 1건의 데이터가 삭제되었습니다.











✏️ 4-2. DELETE(여러개)

deleteMany
조건에 해당하는 document를 전부삭제하는 함수입니다.


CMD 창에서 다음과 같이 입력해줍니다.

// status가 "A"인 데이터 전부 삭제
db.inventory.deleteMany({ status : "A" })



<실행결과> : 조건을 만족하는 4건의 데이터가 삭제되었습니다.











📕 MongoDB 쿼리 연습

<참고자료> : MongoDB 데이터 조회할 때 다양한 조건 주는 방법들


데이터 입력

// inventory 컬렉션 삭제
db.inventory.drop()

// 데이터 입력
db.inventory.insertMany( [
    { item: "canvas", qty: 100, size: { h: 28, w: 35.5, uom: "cm" }, status: "A"},
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "mat", qty: 85, size: { h: 27.9, w: 35.5, uom: "cm" }, status: "A" },
   { item: "mousepad", qty: 25, size: { h: 19, w: 22.85, uom: "cm" }, status: "P" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "P" },
   { 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" },
   { item: "sketchbook", qty: 80, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "sketch pad", qty: 95, size: { h: 22.85, w: 30.5, uom: "cm" }, status: "A" }
] );






문제 1

inventory에서 qty가 50개 이상인 데이터만 찾아서 출력합니다.

문제 1 정답











문제 2

item이 notebook인 데이터만 찾아보겠습니다.

문제 2 정답











문제 3

paper와 planner의 size 데이터만 가져옵니다.

문제 3 정답
































문제1 정답

// 문제 1 정답
db.inventory.find({qty: { $gte: 50 } })

<실행결과>

돌아가기






















문제2 정답

// 문제 2 정답
db.inventory.find({item:"notebook"})

<실행결과>

돌아가기






















문제3 정답

// 문제 3 정답
db.inventory.find({ 
    item : { 
        $in: [ "paper", "planner" ]
    } 
}, {
    "size":1,
    "_id":0
})

<실행결과>

돌아가기





















profile
1.01^365

0개의 댓글