[MongoDB] 몽고DB CRUD(생성, 읽기, 갱신 삭제)

소개

  • 안녕하세요. 오늘은 몽고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

이 글을 공유하기

댓글

Designed by JB FACTORY