MongoDB - 문서 쿼리

안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘 우리는 MongoDB의 흥미로운 세계로 뛰어들어 문서를 쿼리하는 방법을 배우겠습니다. 여러분의 친절한 이웃 컴퓨터 교사로서, 저는 이 여정을 단계별로 안내해드리겠습니다. 그러니 가상의 안전帽을 쓰고, 함께 탐험해보겠습니다!

MongoDB - Query Document

find() 메서드

find() 메서드는 MongoDB에서 보물 찾기와 같습니다. 이를 통해 콜렉션 내의 문서를 검색할 수 있습니다. 여러분의 학교 데이터베이스에 "students"라는 콜렉션이 있다고 상상해 봅시다. find()를 어떻게 사용할 수 있는지 보겠습니다.

db.students.find()

이 간단한 코드 줄은 "students" 콜렉션 내의 모든 문서를 반환합니다. 마치 "모든 학생을 보여달라"고 요청하는 것과 같습니다.

하지만 더 구체적으로 원하시는 경우는 어떻게 되는 걸까요? 예를 들어, 이름이 "John"인 모든 학생을 찾고 싶다면:

db.students.find({name: "John"})

이 쿼리는 이름 필드가 "John"인 모든 문서를 반환합니다. 마치 "반에 있는 모든 John을 보여달라"고 요청하는 것과 같습니다.

pretty() 메서드

이제 결과를 예쁘고 정리된 형태로 보여주기 위해 pretty() 메서드를 사용해보겠습니다. 데이터에 화려한 변신을 시키는 것과 같습니다!

db.students.find().pretty()

이렇게 하면 결과를 포맷된 형태로 표시하여 읽기 쉽게 합니다. 방이 지저분할 때 정리하면 갑자기 모든 것이 더 좋아 보이는 것과 같은 이치입니다!

findOne() 메서드

때로는 단일 문서를 찾고 싶을 때가 있습니다. 그때는 findOne() 메서드가 유용합니다. 첫 사과를 나무에서 꺼내는 것과 같습니다.

db.students.findOne({name: "Sarah"})

이렇게 하면 이름이 "Sarah"인 첫 번째 문서를 반환합니다. 여러 명의 Sarah가 있으면, 첫 번째로 만나는 것을 보여줍니다.

RDBMS WHERE 절과 MongoDB의 동등한 조건

이제 MongoDB 쿼리와 SQL WHERE 절을 비교해보겠습니다. 두 언어 간의 번역과 같은 것입니다!

SQL WHERE 절 MongoDB 동등 조건
WHERE name = "John" {name: "John"}
WHERE age > 25 {age: {$gt: 25}}
WHERE age >= 25 {age: {$gte: 25}}
WHERE age < 25 {age: {$lt: 25}}
WHERE age <= 25 {age: {$lte: 25}}
WHERE age != 25 {age: {$ne: 25}}

MongoDB에서 AND 사용

MongoDB에서는 조건을 AND 논리로 결합할 수 있습니다. "이것과 그것을 모두 원한다"고 말하는 것과 같습니다.

db.students.find({name: "John", age: 20})

이 쿼리는 이름이 "John"이고 나이가 20인 모든 문서를 찾습니다.

MongoDB에서 OR 사용

때로는 하나의 조건이나 다른 조건을 만족하는 문서를 찾고 싶을 때가 있습니다. MongoDB는 이를 지원합니다!

db.students.find({$or: [{name: "John"}, {age: 20}]})

이 쿼리는 이름이 "John"이거나 나이가 20인 모든 문서를 찾습니다.

AND와 OR를 함께 사용

AND와 OR 조건을 함께 사용할 수도 있습니다. 복잡한 보물 지도를 만드는 것과 같습니다!

db.students.find({
grade: "A",
$or: [{name: "John"}, {age: 20}]
})

이 쿼리는 학점이 "A"이고 (이름이 "John"이거나 나이가 20인) 모든 문서를 찾습니다.

MongoDB에서 NOR 사용

NOR는 "이것도 아니고 그것도 아닌 것"을 의미합니다. OR의 반대입니다.

db.students.find({
$nor: [{name: "John"}, {age: 20}]
})

이 쿼리는 이름이 "John"이 아니고 나이가 20이 아닌 모든 문서를 찾습니다.

MongoDB에서 NOT 사용

NOT 연산자는 "이것이 아닌 것"을 의미합니다.

db.students.find({
name: {$not: {$eq: "John"}}
})

이 쿼리는 이름이 "John"이 아닌 모든 문서를 찾습니다.

그렇게 되면, 우리는 MongoDB 쿼리의 세계를 거쳐 간 여정을 마쳤습니다. 간단한 쿼리에서 복잡한 논리 연산까지, 많은 것을 배웠습니다. 연습이 완벽을 이루는 열쇠라는 것을 기억하고, 이 쿼리들을 실험해보지 마세요. 누구 knows? 여러분의 데이터에서 숨겨진 보물을 발견할 수도 있습니다!

before we wrap up, let's have a quick pop quiz. Can you write a query to find all students who are either 18 years old OR named "Emma" AND have a grade of "B"? Give it a try, and don't forget to use the pretty() method to make your results look spiffy!

Happy querying, future database masters!

Credits: Image by storyset