NOSQL 데이터베이스 인 MongoDB는 버전 3.2에서 새로운
운영자를 도입하여 두 세트 이상의 세트에서 왼쪽 결합과 유사한 작업을 수행하여 관계 데이터베이스와 유사한 데이터를 달성 할 수 있습니다. 그러나이 연산자는 집계 작업에 사용되는 것으로 제한되며, 이는 간단한 조회 쿼리보다 더 복잡하고 일반적으로 느리게됩니다.$lookup
(문서의 검색 필드를 입력), (연결할 수있는 컬렉션), () 및 $lookup
localField
운영자는 유용하고 NOSQL 데이터베이스에서 소량의 관계형 데이터를 관리하는 데 도움이 될 수 있지만 SQL의보다 강력한 조인 조항을 대체하는 것은 아닙니다. MongoDB에서 사용자 문서가 삭제되면 Orphan 게시물 문서가 유지되어 제약 조건이 부족합니다. 따라서 운영자가 자주 사용되는 경우 잘못된 데이터 저장소가 사용되며 관계형 (SQL) 데이터베이스가 더 적합 할 수 있음을 나타낼 수 있습니다. from
foreignField
from
as
동료 검토 도움에 대한 Julian Motz에게 감사드립니다. $lookup
다시 말해서, 책 테이블에는 게시자 테이블에서 ID 필드를 참조하는 Publisher_ID 필드가 있습니다. $lookup
이것은 항상 그런 것은 아닙니다…
$lookup
필드가 필요합니다. SQL 기본 키와 유사하게 필요한 경우 자동으로 삽입됩니다.
필드에 작성한 사용자에 대한 텍스트, 날짜, 등급 및 참조를 저장합니다.
<code class="language-sql">SELECT book.title, publisher.name FROM book LEFT JOIN book.publisher_id ON publisher.id;</code>MongoDB Aggregation Query는 각 작업을 순서대로 정의하는 다양한 파이프 라인 연산자를 통과합니다. 먼저
필터를 사용하여 게시물 컬렉션에서 올바른 등급을 가진 모든 문서를 추출해야합니다.
_id
_id
연산자를 사용하여 일치하는 항목을 역 순서로 정렬해야합니다.
단계를 적용 할 수 있습니다.
user_id
<code class="language-json">{ "_id": ObjectID("45b83bda421238c76f5c1969"), "name": "User One", "email": "userone@email.com", "country": "UK", "dob": ISODate("1999-09-13T00:00:00.000Z") }</code>: 문서 에 검색 필드를 입력하십시오 : 컬렉션을 연결할 : 컬렉션
에서 발견 된 필드
: 출력 필드의 이름. $match
<code class="language-json">{ "_id": ObjectID("17c9812acff9ac0bba018cc1"), "user_id": ObjectID("45b83bda421238c76f5c1969"), "date": ISODate("2016-09-05T03:05:00.123Z"), "text": "My life story so far", "rating": "important" }</code>이것은 라는 출력에 새로운 필드를 생성합니다. 각 값이 사용자 문서와 일치하는 배열이 포함되어 있습니다.
$sort
및
<code class="language-javascript">{ "$match": { "rating": "important" } }</code>배열에는 항상 하나의 항목 만 포함됩니다. 우리는 연산자를 사용하여 하위 문서로 분해 할 수 있습니다.
$limit
마지막으로, 파이프 라인의
<code class="language-sql">SELECT book.title, publisher.name FROM book LEFT JOIN book.publisher_id ON publisher.id;</code>모든 것을합시다
<code class="language-json">{ "_id": ObjectID("45b83bda421238c76f5c1969"), "name": "User One", "email": "userone@email.com", "country": "UK", "dob": ISODate("1999-09-13T00:00:00.000Z") }</code>대단해! 마침내 NOSQL로 전환 할 수 있습니다!
mongodb
는 유용하고 강력하지만이 기본 예에도 복잡한 집계 쿼리가 필요합니다. SQL에서 더 강력한 조인 절을 대체 할 수는 없습니다. MongoDB는 또한 제약 조건을 제공하지 않습니다.<code class="language-json">{ "_id": ObjectID("17c9812acff9ac0bba018cc1"), "user_id": ObjectID("45b83bda421238c76f5c1969"), "date": ISODate("2016-09-05T03:05:00.123Z"), "text": "My life story so far", "rating": "important" }</code>
관계형 데이터가있는 경우 관계형 (SQL) 데이터베이스를 사용하십시오! $lookup
는 Mongodb 3.2에 인기있는 추가 기능입니다. NOSQL 데이터베이스에서 소량의 관계형 데이터를 사용할 때 더 실망스러운 문제를 극복합니다. $lookup
MongoDB NOSQL 데이터베이스 (FAQ) 에서 조인 사용에 대한 FAQ
MongoDB의단계는 어떻게 작동합니까?
MongoDB의
단계를 사용하면 다른 컬렉션 ( "Connected"컬렉션)에서 문서를 연결하고 연결된 문서를 입력 문서에 추가 할 수 있습니다. 단계는 문서와 일치하도록 ""Collection ","Localfield "및"Outisefield "와 문서를 출력하기위한"AS "필드를 지정합니다. SQL의 왼쪽 외부 조인과 유사하며 입력 수집에서 모든 문서를 반환하고 "From"컬렉션의 문서를 일치시킵니다. $lookup
스테이지를 필터링하고 문서를 변환합니다.
MongoDB 연결을 사용할 때 NULL 또는 결 측값을 처리하는 방법은 무엇입니까?
메소드보다 고급 데이터 처리 기능을 제공하는 집계 프레임 워크의 일부입니다. $lookup
스테이지를 연결하여 여러 MongoDB 컬렉션을 연결할 수 있습니다. 각 단계는 다른 컬렉션의 연결된 문서를 입력 문서에 추가합니다. $lookup
$lookup
및
스테이지는 샤드 세트를 "From"세트로 받아 들일 수 있습니다. 그러나 추가 네트워크 오버 헤드로 인해 성능이 비 쉐이브 컬렉션만큼 좋지 않을 수 있습니다. $lookup
$lookup
위상을 추가하여 MongoDB에서 연결된 문서를 정렬 할 수 있습니다. 단계는 지정된 필드의 문서를 오름차순 또는 내림차순으로 정렬합니다. $match
메소드와 함께 사용할 수 없습니다. 및
스테이지는 $lookup
$graphLookup
위 내용은 MongoDB NOSQL 데이터베이스에서 조인을 사용합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!