[MongoDB] find()와 연산자

Bam·2022년 3월 6일
0

Database

목록 보기
17/19
post-thumbnail

사전준비

find()함수 실습에 앞서 다음과 같은 데이터베이스와 콜렉션, 도큐먼트를 생성해주세요.

use test  //데이터베이스 생성

db.createCollection("testCollection")  //컬렉션 생성

db.testCollection.insert([
{"name": "alex", "age": 23, "sex": "m"},
{"name": "triss", "age": 21, "sex": "f"},
{"name": "morgan", "age": 24, "sex": "f"},
{"name": "ed", "age": 21, "sex": "m"},
{"name": "reina", "age": 23, "sex": "f"},
{"name": "george", "age": 22, "sex": "m"}
])  //도큐먼트 생성

find() 함수의 기본 활용

그럼 find() 함수와 연산자를 이용한 다양한 활용법에 대해 알아보겠습니다.

우선 컬렉션 내부의 모든 도큐먼트를 확인하는 방법입니다.

db.컬렉션명.find()
db.컬렉션명.find({ })


특정 필드 값을 가진 도큐먼트를 검색하는 방식은 다음과 같습니다. 예시로 컬렉션에서 성별이 남자인 도큐먼트들을 찾아보겠습니다.

db.컬렉션명.find({필드: 필드값})


추가적으로, 굉장히 독특한 기능이 있는데요. find() 함수 뒤에 .pretty()를 붙여주면 보기 편한 형태로 출력이 됩니다.

find() 함수와 쿼리 함께 사용하기

find() 함수의 기본형은 다음과 같습니다.

db.컬렉션명.find(쿼리, projection)

방금까지는 쿼리를 생략했는데요. 쿼리를 추가해서 이용하면 조건 필드만으로는 찾아내기 어려운 조건으로 검색을 할 수 있습니다. projection은 투사라고도 하는데 이것 또한 마지막에 가서 다시 알려드리겠습니다.

그러면 find()에서 사용할 수 있는 쿼리들에는 무엇이 있는지 알아보도록 하겠습니다.

비교 쿼리

첫 번째로 소개할 친구들은 비교 쿼리입니다.

db.컬렉션명.find({필드명: {쿼리: 값}})


다음은 몇몇 쿼리들을 사용해본 결과입니다.

$sq

$gt

$ne

$in

논리 쿼리

다음은 논리 쿼리입니다. 조건과 쿼리에 따른 결과를 반환하며, 조건은 2개 이상이 올 수 있습니다.

db.컬렉션명.find({쿼리: [{조건1}, {조건2}, ...]})

$or

요소 쿼리

요소 쿼리는 검색 기능보다는 쿼리의 검색을 돕는 쿼리에 가깝습니다.

({필드: {쿼리: 값}})

/*
  쿼리 값은 $exists면 true/false가 오고
  $type이면 타입이 옵니다.
*/

평가 쿼리

평가 쿼리는 좀 더 구체적인 검색 옵션을 지원합니다. 활용할 일도 그렇게 많지 않은 것 같고, 각 쿼리마다 사용법이 조금씩 달라서 자세한 내용은 참조 링크를 참조해주세요.

({필드: {쿼리: }})

배열 쿼리

배열 쿼리는 도큐먼트 필드의 값이 배열일 때 이용가능한 쿼리입니다.

({필드: {쿼리: }})

/*
  $all은 쿼리 뒤에 내용이 [대괄호]에 담기고,
  $elemMatch와 $size는 {중괄호}에 담깁니다.
*/

투사 쿼리

투사 쿼리는 검색보다는, 검색 이후 후처리에 대한 연산을 담당합니다. 보통, 결과에서 n개의 결과를 가져오는 경우에 사용하게 됩니다.

find({쿼리}, {투사})

{필드.$: n}  //n은 숫자
{필드: {$elemMatch: {속성: 값}}}
{필드: {$meta: "메타 키워드"}}
{필드: {$slice: n}}

참조

0개의 댓글