
2021년 9월 3일에 작성된 문서 9번 입니다.
MongoDB 배운 내용을 정리했습니다.
MongoDB에선 유연한 데이터 모델링을 통해 개발자가 데이터를 저장할 방법을 결정할 수 있습니다. 따라서 MongoDB에선 일반적으로 서브 도큐먼트 또는 배열로 저장합니다.

MongoDB 샘플 데이터베이스의 trips 컬렉션에서 시작하겠습니다.
start station location과 end station location 필드가 있다.
start station location.type : start station location 도큐먼트 type 필드에 접근. 
start station location필드의 type 필드 값으로 point를 가지고 있다. start station location 도큐먼트 최상위 필드에는 서브 도큐먼트인 객체가 있다. type과 coordinates 필드가 있다. 서브 도큐먼트의 필드 이름은 최상위 필드 뒤 점으로 구분되며 전체 내용이 따옴표로 묶여 있습니다. 이 표기법은 도큐먼트에서 필요한 만큼 깊이 들어가는 데 사용할 수 있습니다.
값으로 도큐먼트가 있는 필드가 있고 해당 필드의 값으로 또 도큐먼트가 있는 경우에도 점 표기법을 사용하여 해당 계층에서 도큐먼트 자체가 아닌 필드의 값을 가져올 수 있습니다.

relationships 배열 첫 번째 요소에 마크 주커버그가 있을 것이라고 가정이제 Shell에서 각 도큐먼트에 있는 relationships 배열의 첫 번째 요소에서 last name이 Zuckerberg인 사람을 검색해보겠습니다. 하나의 결과를 얻었으며 결과는 역시 Facebook입니다.

relationships 배열에서 이름이 Mark인 CEO가 몇 명인지 보겠습니다.
이를 위해 쿼리를 약간 수정해야합니다.

$regex를 사용하여 일치시키려는 문자열을 지정Shell에서 쿼리를 실행해봅시다. 배열 필드의 첫번째 요소의 직함이 CEO이며 이름이 Mark인 52명을 찾았습니다.

이제 relationships 배열에 있는 Mark 중 현재 회사를 떠난 사람을 찾아봅시다.
elemMatch 연산자를 사용해 모든 배열 요소를 살펴보고 조건과 일치하는 지 알 수 있다. Shell에서 쿼리를 실행해봅시다. is past 필드가 true이고 person.first_name 필드가 Mark 인 relationships 배열의 요소를 가진 회사 256개를 찾았습니다.


Written with StackEdit.