21.11.12 MongoDB 2 쿼리 연산자

2021. 11. 13. 18:27작업/MongoDB

SQL 과 몽고디비 쿼리의 모습

 

{ 필드: {연산자: 값} }

몽고디비의 쿼리는 가장 바깥쪽에 필드가 있다. 그러나 or, and, nor, text 등의 연산자들은 바깥에 사용될 수 있다.

or,and,nor는 쿼리를 값으로 가질 수 있고 그것은 []로 담는다.

몽고디비에서 쿼리 내에 []가 있으려면 연산자가 있어야 함.

 

점 표기법 : BSON 내부의 Object에 접근하기 위한 방법

object내부의 내부에 또 접근한다.

배열에서도 index 첫번쨰 인덱스에 접근할 때는 이렇게 접근할 수 있다.

실습 1 점 표기법

총 col
query find결과만 출력

비교연산자

 

영어 비교는 사전순, 배열의 대소비교는 첫 인덱스부터 그 요소를 비교. 키와 값도 비교

 

실습 2 조건에 맞지 않는 도큐먼트 찾기

$in과 re.complie 사용해서 쿼리 찾기

실습 3 크기 비교 연산자 $gte, lte col.find({},{})

논리 연산자 or, and, not

or, not

$or 연산자의 값으로는 배열 [query1, query2 ...] 이 온다. 그 안에 필요한 도큐먼트(쿼리)들이 있음.

쿼리 안에 쿼리 안에 쿼리 안에...

실습 4 논리 연산자

실습 5 복합 논리 연산자

문자열 연산자

article01 article02가 나오도록

 

문자열 Text 연산자

문자열 인덱스

{ '$text': {'$search':찾을 단어1 찾을 단어2 ..} } 얘는 'name' 'author' 같은 필드를 따로 정의안해줘도 된다.

Text 연산자는 Bake 랑 baking 등 동사,진행형 등 유사한 결과들도 다 검색해준다.

실습 6 제목 검색하기 문자열 연산자 사용

배열 연산자

몽고db의 도큐먼트에서 find할 때 어떤 필드의 값이 배열이면, 그 배열에 어떤 특정 요소를 가진 도큐먼트만 출력이 된다.

배열은 값이 여러개(순서 상관 있음)인  것으로 인식한다.

 - $all

all을 쓰면 포함하는 배열을 모두 불러온다.안쓰면 정확히 그 요소만 가진 도큐먼트를 부른다.

- $elemMatch

- $size

 

실습 7 배열 속 특정 값을 가진 도큐먼트 찾기

쿼리 안에 또 쿼리가 있으면 elemMatch 로 query find 하기

컬렉션 전체 모습 쿼리안에 쿼리
원하는 부분만 출력(답)

실습 8 쿼리 안에 쿼리, $all, $size 모두 사용

총 결과
실행 결과