본문 바로가기
SQL

12) mongoDB Tutorial - 배열 쿼리

by Downy_J 2023. 10. 6.
728x90
반응형
SMALL

배열쿼리

Querying Arrays

genres랑 reviews가 배열쿼리면서

reviews는 또 중첩 Documents


장르가 판타지인 책 한번 가져와 보자

배열이라 해서 뭐 복잡할거 없다

알던대로 일단 써보면

엥 Array 배열인데 그냥 String 값 넣듯 넣으면 나온다고?

어떻게???

걍 나온다 그러니 앞으로 이렇게 쓰면 된다 

 

그리고 잘 보면 배열안에 들어있는채로 그 해당하는 책들이 나왔다

 

이게 배열이니깐 꼭 

 

이렇게 써야만 할것 같다

그런데 안나온다. . 왜? 저렇게 생긴게 만약

이렇다면?

이건 또 나온다.. 왜

유일하잖음

 

자 정리하자 머가리 복잡해질라..ㅎㅎ

일단 저 안에 뭐가 있는지 몰라

아님 정확이 뭐가 들었는지 알아

 

이 둘로 나뉘는데

알면? 배열 [ ] 괄호 씌우고

모르면? [ ] 괄호는 벗기고 쓰면 된다

 

씌우고 찾는건 정확이 알고 찾는거기 때문에 그것만 나올거

모르고 찾는건 포함된걸 찾는거라 해당되는 데이터 전부 가져올거


all 이란 키워드가 있네??


햇갈리니 정리함 하자

쿼리 설명
db.books.find({genres: "fantasy"}) genres 필드가 정확히 "fantasy"인 도큐먼트를 반환
db.books.find({genres: ["fantasy"]}) genres 필드가 배열이고 그 안에 "fantasy"가 포함된 도큐먼트를 반환
db.books.find({genres: {$all: ["fantasy", "sci-fi"]}}) genres 필드가 배열이고 그 배열에 "fantasy"와 "sci-fi"가 모두 포함된 도큐먼트를 반환

뭔가 말장난 스럽고 $all 키워드를 쓰고 안쓰고의 차이가 명확이 와닿지 않음..

그래서 한번 더 정리

옵션 설명
$all 사용 genres 필드가 배열이고 그 배열에 지정된
모든 값이 포함된 도큐먼트만 반환
$all 안사용 genres 필드가 배열이고 그 배열에 지정된 값이
포함된 모든 도큐먼트가 반환

이래 봐도 같은말 같은데............


중첩된 데이터 함 가져와보자

중첩된 데이터도 

 배열 형식이다

그럼 알던대로 갖고 온다면

 

 

json 정보 갖고 오듯 하면 될까?

했는데 되네..?

 

배열안에 들어있는 데이터 갖고오기 끝!

728x90