[MongoDB] 몽고DB CRUD(생성, 읽기, 갱신 삭제)
- Database(데이터베이스)/NOSQL - MongoDB
- 2021. 10. 20. 19:43
소개
- 안녕하세요. 오늘은 몽고DB에서 CRUD 하는 방법에 대해서 간단히 학습해 보려고 합니다.
- CRUD는 Create, Read, Update, Delete (생성, 읽기, 갱신, 삭제) 를 뜻하는 의미입니다.
- MongoDB에서는 어떻게 CRUD 하는지 학습해 보도록 하겠습니다.
- 참고로 저는 현재 MongoDB 도커 이미지를 통해서 도커 컴포즈로 MongoDB 서버를 구축해서 테스트 하고 있다는 점, 참고해 주시면 좋겠습니다.
도큐먼트 생성
- 먼저, CRUD 테스트를 진행하기 위한 테스트 도큐먼트를 하나 추가해 보도록 하겠습니다.
> db
test
> use video
switched to db video
> db
video
> db.movies
video.movies
> movie = {"title" : "Star Wars : Episode IV - A New Hope", "director" : "George Lucas", "year" : 1977}
{
"title" : "Star Wars : Episode IV - A New Hope",
"director" : "George Lucas",
"year" : 1977
}
- 위와 같이 movie 라는 도큐먼트를 생성하였습니다.
Create - 생성
- insertOne 함수를 이용해서 컬렉션에 도큐먼트를 추가할 수 있습니다.
- 앞에서 생성한 movie 도큐먼트를 insertOne 함수를 이용해서 컬렉션에 추가해 보도록 하겠습니다.
> db.movies.insertOne(movie)
{
"acknowledged" : true,
"insertedId" : ObjectId("616fef1b487b41f49f5038a2")
}
> db.movies.find().pretty()
{
"_id" : ObjectId("616eb0f7028eb1dad8965340"),
"title" : "Star Wars : Episode IV - A New Hope",
"director" : "Georage Lucas",
"year" : 1977
}
{
"_id" : ObjectId("616fef1b487b41f49f5038a2"),
"title" : "Star Wars : Episode IV - A New Hope",
"director" : "George Lucas",
"year" : 1977
}
- insertOne 함수를 이용해 movies 컬렉션에 movie 객체를 저장하였습니다.
- find 함수를 호출했더니, "_id" 키가 추가되었고 다른 키/값 쌍들은 입력한 대로 저장됐습니다.
Read - 읽기
- find와 findOne은 컬렉션을 쿼리하는데 사용됩니다.
- 컬렉션에서 단일 도큐먼트를 읽으려면 findOne 함수를 사용하면 됩니다.
> db.movies.findOne()
{
"_id" : ObjectId("616eb0f7028eb1dad8965340"),
"title" : "Star Wars : Episode IV - A New Hope",
"director" : "Georage Lucas",
"year" : 1977
}
- find와 findOne은 쿼리 도큐먼트 형태로 조건 전달도 가능합니다.
- 따라서 쿼리에서 일치하는 도큐먼트로 결과를 제한합니다.
- shell은 find와 일치하는 도큐먼트를 20개까지 자동으로 출력하지만 그 이상도 가져올 수 있습니다.
Update - 갱신
- 게시물은 Update 하려면 updateOne을 사용합니다.
- updateOne의 매개변수는 최소 두개 입니다.
- 첫 번째는 수정할 도큐먼트를 찾는 기준이고, 두 번째는 갱신 작업을 설명하는 도큐먼트입니다.
- 앞서, 만든 영화에서 title이 스타워즈인 녀석의 년도를 2021 년도로 바꿔 보았습니다.
> db.movies.updateOne({title : "Star Wars : Episode IV - A New Hope"}, {$set : {year : 2021}})
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.movies.find().pretty()
{
"_id" : ObjectId("616eb0f7028eb1dad8965340"),
"title" : "Star Wars : Episode IV - A New Hope",
"director" : "Georage Lucas",
"year" : 2021
}
Delete - 삭제
- deleteOne과 deleteMany는 도큐먼트를 데이터베이스에서 영구적으로 삭제합니다.
- 두 함수 모두 필터 도큐먼트로 삭제 조건을 지정합니다.
> db.movies.deleteOne({title : "Star Wars : Episode IV - A New Hope"})
{ "acknowledged" : true, "deletedCount" : 1 }
- 필터와 일치하는 모든 도큐먼트를 삭제하려면 deleteMany를 사용하면 됩니다.
728x90
'Database(데이터베이스) > NOSQL - MongoDB' 카테고리의 다른 글
[MongoDB] 몽고DB 데이터형 (0) | 2021.10.24 |
---|---|
[MongoDB] 몽고DB VSCode 연동하기 (0) | 2021.10.23 |
[MongoDB] 몽고DB 도커 - command insert requires authentication 에러 해결방법 (0) | 2021.10.19 |
[MongoDB] 몽고DB 기본 - 도큐먼트, 컬렉션, 데이터베이스 (0) | 2021.10.19 |
[Mongo DB] 도커로 MongoDB 서버 구축 및 Robo 3T 연결하기 (0) | 2021.10.18 |
이 글을 공유하기