MongoDB - 문서 업데이트

안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘 우리는 MongoDB 문서 업데이트의 흥미로운 세상으로 뛰어들어 보겠습니다. 여러분의 친절한 이웃 컴퓨터 선생님이자, 저는 많은 예제와 설명을 통해 여러분을 이 길 안내해 드리겠습니다. 그러니 마음에 드는 음료를 한 잔 챙겨 comfortable하게 자리 잡고, 이 MongoDB 모험을 함께 시작해 보세요!

MongoDB - Update Document

MongoDB update() 메서드

먼저 고전적인 update() 메서드부터 시작해 보겠습니다. 몽고디비 데이터베이스에 책 컬렉션이 있고, 특정 책의 가격을 업데이트하고 싶다고 가정해 봅시다. 다음과 같이 할 수 있습니다:

db.books.update(
{ title: "The Great Gatsby" },
{ $set: { price: 12.99 } }
)

이 예제에서 우리는 MongoDB에게 "The Great Gatsby"라는 제목의 책을 찾아 가격을 12.99로 설정하도록 합니다. 책점에서 특정 책에 새로운 가격을 부착하는 것과 같은 이야기입니다.

하지만, 여기서 끝이 아닙니다! update() 메서드는 몇 가지 트릭을 가지고 있습니다. 더 복잡한 예제를 보겠습니다:

db.books.update(
{ author: "F. Scott Fitzgerald" },
{ $inc: { copiesSold: 100 }, $set: { bestseller: true } },
{ multi: true }
)

여기서 우리는 F. Scott Fitzgerald 작가의 모든 책들의 'copiesSold' 필드를 100 증가시키고 'bestseller'를 true로 설정합니다. 'multi: true' 옵션은 우리가 첫 번째 문서가 아니라 모든 일치하는 문서를 업데이트하도록 합니다.

MongoDB save() 메서드

이제 save() 메서드에 대해 이야기해 보겠습니다. 이 메서드는 스위스 아ーノ이와 같은 다용도 도구입니다. 새로운 문서를 삽입하거나 기존 문서를 업데이트할 수 있습니다. 다음은 예제입니다:

db.books.save(
{
_id: ObjectId("507f1f77bcf86cd799439011"),
title: "To Kill a Mockingbird",
author: "Harper Lee",
year: 1960,
price: 10.99
}
)

이 _id를 가진 문서가 이미 존재하면 업데이트되고, 존재하지 않으면 새로운 문서가 삽입됩니다. 도서 목록에 새로운 항목을 작성하거나 기존 항목을 업데이트하는 마법의 펜과 같은 것입니다!

MongoDB findOneAndUpdate() 메서드

findOneAndUpdate() 메서드는 탐정처럼 문서를 찾아 업데이트하고, 원본 문서나 업데이트된 문서를 반환합니다. 이를 실제로 보겠습니다:

db.books.findOneAndUpdate(
{ title: "1984" },
{ $set: { genre: "Dystopian Fiction" } },
{ new: true }
)

이 메서드는 "1984" 책을 찾아 장르를 추가하고, 'new: true' 덕분에 업데이트된 문서를 반환합니다. 도서관에서 책을 찾아 장르 스티커를 추가하고 업데이트된 책을 보여주는 것과 같은 이야기입니다.

MongoDB updateOne() 메서드

updateOne() 메서드는 단일 문서를 업데이트하려는 경우에 완벽합니다. 다음은 그 사용법입니다:

db.books.updateOne(
{ title: "The Catcher in the Rye" },
{ $set: { status: "Checked Out" }, $inc: { timesCheckedOut: 1 } }
)

이 메서드는 "The Catcher in the Rye"의 상태를 "Checked Out"으로 업데이트하고, 'timesCheckedOut' 카운터를 증가시킵니다. 도서관 시스템에서 단일 책의 상태를 업데이트하는 것과 같은 것입니다.

MongoDB updateMany() 메서드

마지막으로, updateMany() 메서드를 소개합니다. 이 메서드는 여러 문서에 동시에 변경을 적용할 때 유용합니다. 예제를 보겠습니다:

db.books.updateMany(
{ year: { $lt: 1900 } },
{ $set: { category: "Classic" }, $inc: { specialEditionPrice: 5 } }
)

이 작업은 1900년 이전에 출판된 모든 책을 "Classic" 카테고리로 분류하고, 특별 판 가격을 5 증가시킵니다. 도서관 전체를 돌아다니며 오래된 책들을 동시에 업데이트하는 것과 같은 이야기입니다!

이제 모든 메서드를 요약한 표를 제공하겠습니다:

메서드 설명 사용 사례
update() 단일 문서 또는 여러 문서 업데이트 일반적인 업데이트
save() 새로운 문서 삽입 또는 기존 문서 업데이트 문서가 존재하는지 모를 때
findOneAndUpdate() 문서 찾기, 업데이트 및 원본 또는 업데이트된 문서 반환 업데이트 전후 문서 상태 확인 필요 시
updateOne() 단일 문서 업데이트 단일 문서 업데이트 시
updateMany() 여러 문서 업데이트 여러 문서에 변경 사항 적용 시

기억해 두세요, 젊은 padawans, 몽고디비에서 문서를 업데이트하는 것은 정원 가꾸기와 같습니다. 신중하고 정확해야 하지만, 이 도구들을 사용하면 데이터를 아름답게 형성할 수 있습니다.

이 수업을 마무리하면서, 저는 언제인가 모르게 모든 책을 "Anonymous" 작가로 업데이트한 적이 있었던 기억이 납니다. 이를 수리하는 데 몇 시간이 걸렸지만, 이를 통해 조건을 신중하게 확인하는 중요성을 배웠습니다. 업데이트 버튼을 누르기 전에 항상 조건을 다시 확인하세요!

이제 자신감을 가지고 문서를 업데이트하세요. 여러분의 쿼리가 정확하고, 업데이트가 빠르기를 바랍니다!

Credits: Image by storyset