TIL 9.5

Hong·2021년 9월 5일
0

TIL 9.5

MongoDB(Advanced)

<비교연산자>

  • $eq(Equal to): 지정된 값이 서로 같다. (상황에 따라 생략 가능하다.)
  • $ne(Not Equal to): 지정된 값이 서로 같지 않다.
  • $gt(Greater Than): 주어진 값보다 크다.
  • $gte(Greater Than or Equal to): 주어진 값보다 크거나 동일하다.
  • $lt(Less Than): 주어진 값보다 작다.
  • $lte(Less Than or Equal to): 주어진 값보다 작거나 동일하다.

<논리연산자>

  • $and: 주어진 모든 쿼리절과 일치하는지 여부를 확인
  • $or: 주어진 쿼리절이 하나라도 일치하는지 여부를 확인
  • $nor: 주어진 모든 쿼리절과 일치하지 않은지 여부를 확인
  • $not: 주어진 쿼리와 일치하는지 여부를 확인 (배열 구문이 필요하지 않다)

<표현연산자>

  • $expr
    • 쿼리 내에서 집계 표현식(Aggregation Expression)을 사용할 수 있으며
      { $expr : { expression } } 구문을 사용한다.
    • $expr를 이용해 변수와 조건문을 사용할 수 있다.
    • $expr를 이용해 같은 도큐먼트 내의 필드들을 서로 비교할 수 있다.

$: 연산자를 사용할 때 사용하거나 필드 이름 자체가 아니라 해당 필드의 값을 불러올 때 사용한다.

<배열연산자>

  • $push: 배열에 요소를 추가하거나 다른 유형의 값이었던 경우 배열 타입의 필드로 바꿀 수 있다.
    • []을 사용할 경우: 지정된 배열 필드에 순서와 요소가 정확하게 일치하는 배열을 가진 도큐먼트를 찾는다.
    • []을 사용하지 않을 경우: 지정된 배열 필드에 문자열로 주어진 요소가 포함된 모든 도큐먼트를 찾는다.
  • $all: 배열 요소의 순서와 상관없이 지정된 요소가 포함된 모든 도큐먼트를 찾을 수 있다.
  • $size: 지정한 배열 길이로만 쿼리하여 지정한 요소가 모두 배열에 포함된 도큐먼트만 반환된다.

<배열연산자와 Projection>

  • 쿼리와 일치하는 모든 도큐먼트에 대해 해당 필드값을 볼 수 있다.
    • < field >: 1 - 지정한 필드값 포함
    • < field >: 0 - 지정한 필드값 제외
  • 한번의 Projection에는 0과 1을 혼합 할 수 없다.
    • 1과 0을 혼용할 수 있는 유일한 경우는 디폴트로 포함되는 _id 필드를 제외하도록 특별히 요청할 때이며, 이와 같은 요청이 없다면 _id 필드가 기본적으로 도큐먼트에 포함된다.
  • $elemMatch(projection): 지정된 기준과 일치하는 요소가 하나 이상있는 배열 요소만 프로젝션한다.
  • $elemMatch(query): 배열 필드에 서브 도큐먼트 필드가 쿼리와 일치하는 문서를 찾는다.

<배열과 서브도큐먼트 쿼리하기>

  • 도큐먼트 안에 도큐먼트(서브도큐먼트)를 쿼리할 때는 Dot notaion이용
  • 배열안에 서브도큐먼트 쿼리하기: 요소의 위치를 지정해야 한다.
    (필드값).(배열 인덱스.중첩된 객체를 값으로 가지고 있는 필드).(서브도큐먼트 필드):(찾고있는 값)

<Aggregation Framework>

  • 나열된 순서대로 단계가 실행되는 파이프 라인의 형태이다. 파이프라인은 각 단계 순서대로 데이터가 처리된다. 이 안의 데이터는 원본데이터를 수정하거나 변경하지 않는다.
    • $match: 지정된 조건과 일치하는 문서만 다음 파이프라인 단계로 전달하도록 문서를 필터링한다.
    • $project: 각 도큐먼트에서 해당 필드 값이 아닌 모든 필드를 필터링하는 단계
    • $group: 들어온 데이터 스트림을 여러개로 그룹화 하는 연산자
      ( $match 등과 같은 필터링 단계가 없으면 데이터 요약, 계산 및 그룹화를 수행 할 때 원본 데이터를 수정하지 않는다는 점을 유의)
profile
코딩 배우기

0개의 댓글