LESSON 3: CODE AND QUERIES
쿼리 언어
- MongoDB 에는 두가지 쿼리 언어인 MQL, MongoDB 집계 프레임워크을 제공한다.
- SQL은 선언적 언어인 반면 MQL 및 MongoDB 집계 프레임워크는 명령형 언어이다.
- SQL은 원하는 결과를 설명하지만, MQL은 수행할 작업에 대해 알려준다.
MQL
- MongoQueryLanguage 은 단일 컬렉션 내에 문서를 쿼리하도록 설계된 간단한 구문을 사용한다.
- 문서의 집계 또는 복잡한 조작을 위해 설계되지 않았다.
MongoDB 집계 프레임워크
- 복잡한 작업을 더 작은 단계로 나누어 집계를 더 쉽게 생성할 수 있도록 설계되었다.
- 단계 내에서 사용할 수 있는 데이터 조작 및 변환을 위한 공통 연산자 세트를 제공한다.
- 복잡한 쿼리를 실행해야 하고, 간단한 MQL쿼리로 충분하지 않을 때 집계 파이프라인이 사용된다.
MQL Syntax
- db.(collection).find() 메소드를 통해 컬렉션을 지정한다.
-> SQL 의 SELECT
- 필드 값 표현식으로 구성된 쿼리 필터를 사용한다.
-> db.collection.find({field1:value,...})
-> SQL 의 WHERE
- 쿼리 연산자는 쿼리 필터 문서에서 조건을 지정할 수 있다.
-> db.collection.find({field1:{operator1:value},...})
MongoDB Aggregation Framework Queries
- MongoDB 집계 프레임워크는 쿼리에도 사용할 수 있고, 풍부한 표현 데이터 처리 파이프라인을 위해 설계되었다.
- MongoDB 집계 프레임워크는 여러 변환, 여러 컬렉션이 포함될 수 있다.
- db.(collection).aggregate() 메소드는 SQL의 SELECT 문과 동일하다.
- MongoDB 집계 프레임워크는 데이터베이스의 일부로 추가 라이브러리나 프레임워크가 필요하지 않다.
(unionWith은 써본적이 없다..아직까지..)
Object Mappers
- Object Mapper는 데이터베이스 테이블과 객체를 맵핑하는 코드 객체이다.
- RDBMS 와 MongoDB 아키텍처 구조
- MongoDB 같은 경우, 응용 프로그램과 데이터베이스 간의 기능이 드라이버로 더 많이 통합되어 있다.
- RDBMS 경우, 객체 맵퍼를 사용하여 테이블의 데이터를 가져오며 해당 처리는 객체 맵퍼 레이어가 수행한다.
- MongoDB 경우, 데이터가 애플리케이션에서 사용되는 개체 그대로 저장되는 경향이 있다.
따라서 문서 자체가 객체에 직접 맵핑되는 경우가 많기 때문에 객체 맵핑이 자주 필요하지 않다.
- 즉, MongoDB로 개발할 때에는 객체 맵퍼가 필요하지 않다.
Code Samples
실무에서는 보통 jpa를 통해 처리했다..!
출처 : https://learn.mongodb.com/learn/course/m100-mongodb-for-sql-pros/lesson-3-code-and-queries/learn?page=1