mongodb join 예제

mongodb join 예제

TL;DR: 당신이 하고 있는 일은 괜찮으며, 다른 방법이 있습니다. 몇 가지 좋은 예에 대 한 mongodb 문서의 데이터 모델 패턴을 체크 아웃. http://docs.mongodb.org/manual/data-modeling/ “조인” 컬렉션의 문서에서 필드와 입력 된 문서에서 필드 간의 같음 일치를 수행 하려면 $lookup 단계는 다음 구문이 있습니다. 항목별 웨어하우스 컬렉션및 재고 수량이 주문된 수량을 충당하기에 충분한지 여부: 마지막 하나는 MongoDB 집계 파이프라인으로 코드를 다시 실행하기 위해 지불하는 예입니다. 물론 Mongo는 관계형 데이터베이스가 아니며 개발자는 $lookup 위해 특정 사용 사례를 권장하기 위해 주의를 기울이고 있지만 적어도 3.2에서 MongoDB를 사용하여 조인을 할 수 있습니다. 이 단계에서 는 합리적인 결과를 신속하게 달성했지만 만족스럽지 않습니다. 예를 들어 누가 책을 썼는가? 그들의 주제 카테고리는 무엇입니까? MongoDB 스키마 디자인의 주요 테넌트 중 하나는 조인의 필요성을 피하기 위해 설계하는 것입니다. 데이터는 물론 응용 프로그램 코드 내부에서 항상 조인되지만 원래는 서버 자체 내에서 조인을 수행할 방법이 없었습니다. mongo-join-쿼리를 사용하여 쿼리에서 집계 파이프라인을 자동으로 만들 수 있습니다. 다음은 샘플 컬렉션의 일부 데이터를 사용하는 예제입니다. MongoDB $lookup 유용하고 강력하지만 이 기본 예제에도 복잡한 집계 쿼리가 필요합니다. SQL에서 제공하는 보다 강력한 JOIN 절을 대체할 수 있는 것은 아닙니다.

MongoDB도 제약 조건을 제공하지 않습니다. 사용자 문서가 삭제되면 고아 게시물 문서가 유지됩니다. $lookup 단계에서는 현재 컬렉션에 참여할 컬렉션과 일치할 필드를 지정할 수 있습니다. SQL 지식과 관련하여 JOIN 작업의 결과는 로컬 및 외부 테이블에서 모든 필드를 연결하는 별도의 행이라는 것을 항상 알고 있습니다. MongoDB의 경우 결과 문서가 로컬 컬렉션 문서의 배열로 추가된다는 점에서 다른 경우입니다. 예를 들어 두 개의 컬렉션을 살펴보겠습니다. `학생` 및 `단위` 면책 조항: 나는이 정확한 문제를 해결하기 위해 몽고 조인 쿼리를 썼다. Mongo 3.2에서 이 질문에 대한 답변은 대부분 더 이상 올바르지 않습니다.

집계 파이프라인에 추가된 새 $lookup 연산자는 기본적으로 왼쪽 외부 조인과 동일합니다: 최종 집계 쿼리는 게시물을 일치시키고, 순서대로 정렬하고, 최신 20개 항목에 대한 제한을 만들고, 사용자 데이터를 조인하고, 사용자 배열을 평평하게 하고, 필요한 반환을 합니다. 필드만 을 입력합니다. 전체 명령: SQL 과 NoSQL 데이터베이스 간의 가장 큰 차이점 중 하나는 JOIN입니다. 관계형 데이터베이스에서 SQL JOIN 절을 사용하면 둘 사이의 공통 필드를 사용하여 두 개 이상의 테이블의 행을 결합할 수 있습니다. 예를 들어 책과 출판사 테이블이 있는 경우 다음과 같은 SQL 명령을 작성할 $lookup 수 있습니다. 집계 프레임워크 내에서 $lookup 연산자가 도입되면서 3.2에서 변경된 매개 변수가 있어야 합니다. $lookup 연산자는 왼쪽 외부 조인과 동등한 성능을 발휘합니다. 게시자가 없는 제목에는 null이 있습니다.

외부 조인을 완전히 잘라내고 초기 인덱싱된 $match 통해 필터링할 수 있습니다. NoSQL을 사용하면 중복 성 및 저장 공간이 비용(업데이트 에 필요한 프로세서 시간 및 추가 데이터를 저장하는 데 필요한 하드 드라이브 비용 모두)으로 인해 문제가 되지 않는다는 것을 받아들인다면 비정규화는 문제가 되지 않습니다(수백 개의 임베디드 어레이의 경우). 수천 개의 항목이 성능 문제일 수 있지만 대부분의 경우 문제가 되지 않습니다.

Comments are closed.

    About

    This is the deafult sidebar, add some widgets to change it.