이번 시간에는 NoSQL의 대명사인
MongoDB 에서
CRUD 하는 방법에 대해서 배워보겠습니다.
<참고자료> : MongoDB CRUD
(MongoDB 홈페이지에
document가 정말 잘 정리되어 있더라고요.
제 블로그를 돌아보며 반성 쪼끔했답니다. ^^)
아래 글 참고해서 MongoDB 설치해주세요 ^^
<참고자료> : MongoDB 설치방법
CMD 창에서 다음과 같이 입력해줍니다.
mongod --dbpath=D:\mongodb\data
<실행결과> : MongoDB 서버가 켜졌습니다.
CMD 창을 하나 더 열어서 다음과 같이 입력합니다.
mongo
<실행결과> : 이 창에서 실습 진행하면 됩니다.
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"
}
)
<실행결과> : 한 건의 데이터가 입력 되었습니다.
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건의 데이터가 한 번에 생성되었습니다.
이번에는 inventory 컬렉션의 데이터를 전부 조회해보겠습니다.
CMD 창에서 다음과 같이 입력해줍니다.
db.inventory.find({})
<실행결과> : 이전에 입력한 10건의 데이터가 조회되었습니다.
inventory 컬렉션에서
item이 "canvas"인 데이터를 조회하겠습니다.
CMD 창에서 다음과 같이 입력해줍니다.
db.inventory.find( { item: "canvas" } )
<실행결과> : 이번에는 canvas 아이템만 조회되었습니다.
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" 열이 추가 되었습니다.
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건의 데이터가 다음과 같이 수정 되었습니다.
deleteOne
은
조건을 만족하는 document 중
제일 먼저 등장하는 document를
삭제하는 함수입니다.
CMD 창에서 다음과 같이 입력해줍니다.
// status가 "D"인 데이터 하나 삭제
db.inventory.deleteOne( { status: "D" } )
<실행결과> : 1건의 데이터가 삭제되었습니다.
deleteMany
은
조건에 해당하는 document를 전부삭제하는 함수입니다.
CMD 창에서 다음과 같이 입력해줍니다.
// status가 "A"인 데이터 전부 삭제
db.inventory.deleteMany({ status : "A" })
<실행결과> : 조건을 만족하는 4건의 데이터가 삭제되었습니다.
<참고자료> : 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" }
] );
inventory에서 qty가 50개 이상인 데이터만 찾아서 출력합니다.
item이 notebook인 데이터만 찾아보겠습니다.
paper와 planner의 size 데이터만 가져옵니다.
// 문제 1 정답
db.inventory.find({qty: { $gte: 50 } })
<실행결과>
// 문제 2 정답
db.inventory.find({item:"notebook"})
<실행결과>
// 문제 3 정답
db.inventory.find({
item : {
$in: [ "paper", "planner" ]
}
}, {
"size":1,
"_id":0
})
<실행결과>