Back/MongoDB

Mongo DB 실습 - 3

2023. 5. 18. 10:25
목차
  1. 쿼리
  2. 배열
  3. 커서

쿼리

배열

  • find() 할 때 문서의 키에 대응하는 value 값에 쿼리문안에 요청한 값이 있으면 출력한다.

  • $all 연산자는 2개 이상의 배열 요소가 일치하는 배열을 찾을 때 사용한다.
    • 순서는 중요하지 않아 조회하는 "type" 키의 배열 값이 ["banana","apple" ~] , ["apple", "banana" ~ ] 모두 조회가 가능하다
  • 전체 배열과 일치하는 문서를 조회할 경우 모든 요소의 인덱스 순번에 해당하는 배열내 요소의 값을 작성해서 정확히 일치하여야 함
  • 배열 내의 특정 요소를 조회하기 위해선 "key:index" 구문을 이용하여 순서를 지정한다.
    • "type" 키의 값에 "세 번째" 인덱스에 위치한 값을 조회
    • 배열의 인덱스는 0부터 시작하기 때문에 2로 입력

  • $size 연산자는 특정 크기의 배열을 쿼리할 수 있다.

  • $slice 연산자는 배열 요소의 부분집합을 반환
    • 즉, 배열로 이루어진 필드가 10개 있다면, 그중 필요한 부분만 반환할 수 있음
  • details 키의 값은 내장 문서가 있고, 내장 문서 안에는 colors 키와 sizes키에 해당하는 각 배열의 값들이 존재
  • $slice : 2를 통해 details.sizes 키에 해당하는 배열의 값 중 인덱스가 0부터 시작하는 2개의 값들을 반환

  • $slice : [2,3] 을 통해 처음 2개는 건너뛰고, 3번째 요소부터 3개를 반환해라
  • $slice : -2 를 통해 끝 부분 2개를 반환

  • $where
    • $where 연산자는 JavaScript의 표현 또는 JavaScript 함수 전체를 쿼리에 전달할 수 있음
    • 아래 예제는 this 키워드를 이용하여 해당 컬렉션 내의 키를 조회하여 korean == science인 문서를 조회한 것.

  • this 키워드 대신 obj 키워드도 사용 가능하다
  • $where 주의사항
    • $where 쿼리는 일반 쿼리보다 훨씬 느리니 반드시 실행할 경우가 아니면 사용하지 말 것
      • $where절을 포함한 쿼리는 각 문서의 BSON에서 JavaScript 객체로 변환되는 과정을 거치기 때문에 느림
    • 또한, 인덱스를 사용하는 컬렉션은 $where을 사용할 수 없기 때문에 되도록 사용하지 말 것.

커서

  • 데이터베이스는 커서를 사용하여 find() 함수의 결과를 반환
    • 데이터베이스 커서는 일련의 데이터에 순차적으로 접근할 때 검색 및 현재 위치를 포함하는 데이터의 한 요소
    • count(), pretty(), next() 등이 있음.
  • 즉, find() 함수를 사용하면 항상 커서를 반환하고, 커서를 메서드 형식으로 사용하면 검색 결과를 정렬하거나 지정된 건수의 문서를 건너뛰거나 제한하는 등 다양한 기능을 사용할 수 있음.
    • collection 이름에 컬렉션에 x 키릐 값이 1부터 100까지 반복하는 반복문을 통해 생성
    • var(지역변수)로 cursor 변수를 선언하여 검색 결과를 저장
    • 저장한 후 해당 변수에 .next() 기능을 활용하여 0부터 순차적으로 데이터를 검색
    • .next()는 현재 커서에서 다음 문서를 반환하는 기능
for(i=0; i<100; i++) { db.collection.insertOne( {x : i} ); }
var cursor = db.collection.find();

  • 대표적으로 많이 사용하는 커서 기능은 sort(), limit(), skip() 기능이 있음.
  • $limit 함수는 출력되는 결과 중 원하는 개수의 결과만 반환할 수 있다.
  • $limit는 상항만 설정되고, 하한은 설정할 수 없음.

  • $skip 함수는 출력되는 결과 중 입력한 수치에 따라 처음 수치만큼 건너뛴 나머지의 문서를 반환
  • 컬렉션에서 조건에 맞는 결과가 입력한 수치보다 적다면 아무 결과도 반환하지 않음.

  • $sort  함수는 정렬을 할 수 있어 정렬하고자 하는 키와 해당하는 고정된 값인 1과 -1을 입력받음
    • 1은 오름차순, -1은 내림차순
  • 키가 여러개라면 주어진 정렬 방향에 따라 결정

  • $sort 함수에서 키가 여러 개라면 주어진 정렬 방향에 따라 결정
  • name 키의 값을 오름차순으로 먼저 정렬하고, 동일한 값이 있다면 해당하는 문서 내에서 age 키의 값을 내림차순으로 정렬
db.people.find().sort( { name : 1 , age ; -1} )

  • $limit, $skip, $sort 기능을 조합한 쿼리 수행
  • 내림차순 된 정렬 값에서 10개만 제한하여 문서 반환
  • 내림차순 된 정렬 값에서 5개만 건너뛰고, 10개로 제한하여 출력
  • 커서 기능의 순서는 상관 없음.

 

'Back > MongoDB' 카테고리의 다른 글

MongoDB와 Python 연동하기  (0) 2023.05.18
Mongo DB 이론 - 2  (0) 2023.05.17
Mongo DB 실습 - 2  (0) 2023.05.17
Mongo DB 실습 - 1  (0) 2023.05.17
MongoDB 이론 - 1  (0) 2023.05.17
  1. 쿼리
  2. 배열
  3. 커서
'Back/MongoDB' 카테고리의 다른 글
  • MongoDB와 Python 연동하기
  • Mongo DB 이론 - 2
  • Mongo DB 실습 - 2
  • Mongo DB 실습 - 1
잘잔디
잘잔디
4학년이 되고 취업 준비를 위해 2023-01-01부터 공부한 내용을 정리한 블로그입니다.
MBCS 공부일지4학년이 되고 취업 준비를 위해 2023-01-01부터 공부한 내용을 정리한 블로그입니다.
잘잔디
MBCS 공부일지
잘잔디
전체
오늘
어제
  • 분류 전체보기 (217)
    • 파이썬 (28)
      • 파이썬 이론 (8)
      • NumPy (3)
      • Pandas (6)
      • 파이썬 시각화 (8)
      • 응용 (2)
    • Java (3)
    • Back (38)
      • DataBase이론 (12)
      • MySQL (2)
      • JSP (8)
      • JSTL (2)
      • Spring (0)
      • Django (8)
      • MongoDB (6)
      • FastAPI (0)
    • Front (8)
      • HTML (3)
      • CSS (2)
      • JS (1)
    • 회고록 (10)
    • 알고리즘 문제 풀이 (95)
      • 알고리즘 이론 공부 (14)
      • 프로그래머스 (69)
      • 백준 (12)
    • 머신러닝 (0)
    • 딥러닝 (0)
    • Git (3)
    • R 프로그래밍 (3)
    • 빅데이터 관리 (16)
      • 리눅스 (4)
      • Hadoop (12)
    • AWS (2)
    • 일상 (10)
      • 책 리뷰 (5)
      • TOEIC (2)
      • 자잘하게 공부한 것들 (2)
    • 사이버보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • HTML
  • Java
  • 이중우선순위 큐
  • 즐거웠다
  • backend
  • OOP
  • 객체지향
  • web
  • playdata
  • db
  • 백준
  • 골드
  • git
  • CSS
  • Encore
  • Database
  • 독산역
  • JavaScript
  • JS

최근 댓글

최근 글

hELLO · Designed By 정상우.
잘잔디
Mongo DB 실습 - 3
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.