이 기사는 MongoDB의 내장 문서와 배열을 탐구합니다. 중첩 필드 작성, 쿼리 및 업데이트, 임베딩과 참조의 성능 영향을 비교하고 최적의 효율성을위한 스키마 설계 모범 사례를 제공합니다.
Mongodb의 유연성은 임베디드 문서 및 배열에 대한 지원을 통해 빛납니다. 임베디드 문서는 다른 문서에 중첩 된 문서이며 배열에는 문서 나 값 목록이 있습니다. 그것들을 사용하는 방법을 살펴 보겠습니다.
임베디드 문서 작성 및 사용 : 관련 데이터가 작고 항상 함께 액세스 할 때 임베디드 문서가 이상적입니다. 각 사용자가 주소가있는 users
컬렉션을 고려하십시오. 별도의 addresses
수집하고 참조하는 대신 사용자 문서 내에 직접 주소를 포함시킬 수 있습니다.
<code class="json">{ "_id": ObjectId("..."), "name": "John Doe", "email": "john.doe@example.com", "address": { "street": "123 Main St", "city": "Anytown", "zip": "12345" } }</code>
쿼리에서 db.users.find({ "address.city": "Anytown" })
문서 내에 문서 배열을 포함시킬 수도 있습니다. 예를 들어, 사용자는 여러 전화 번호가있을 수 있습니다.
<code class="json">{ "_id": ObjectId("..."), "name": "Jane Doe", "email": "jane.doe@example.com", "phones": [ { "type": "home", "number": "555-1212" }, { "type": "mobile", "number": "555-3434" } ] }</code>
배열 생성 및 사용 : 어레이는 사용하기에 간단합니다. $push
, $pull
및 $set
과 같은 업데이트 연산자를 사용하여 요소를 직접 추가, 제거 및 업데이트 할 수 있습니다. 예를 들어 새 전화 번호 추가 :
<code class="javascript">db.users.updateOne( { "_id": ObjectId("...") }, { $push: { "phones": { "type": "work", "number": "555-5656" } } } )</code>
임베딩과 참조 사이의 선택은 성능에 큰 영향을 미칩니다. 포함 데이터가 자주 필요할 때 읽기의 경우 일반적으로 임베딩이 더 빠릅니다. 모든 정보가 단일 문서에 있기 때문에 필요한 데이터베이스 쿼리 수를 줄입니다. 그러나 임베딩은 더 큰 문서 크기로 이어질 수 있으며, 특히 임베디드 데이터가 크거나 자주 업데이트되는 경우 쓰기 성능 및 저장 비용에 잠재적으로 영향을 줄 수 있습니다.
반면에 참조에는 관련 데이터에 대한 별도의 컬렉션을 작성하고 객체 ID를 사용하여 연결하는 것이 포함됩니다. 이것은 자주 업데이트되는 대규모 데이터 세트에 더 좋습니다. 여러 쿼리가 필요하기 때문에 읽기가 약간 느려지지만 문서가 더 작아서 쓰기는 일반적으로 더 빠르고 효율적입니다. 참조는 또한 데이터 복제를 피하고 데이터 정규화를 촉진하는 데 도움이됩니다. 최상의 접근법은 특정 사용 사례 및 데이터 특성에 따라 다릅니다. 이 결정을 내릴 때 데이터 크기, 업데이트 빈도 및 쿼리 패턴을 고려하십시오.
중첩 필드를 쿼리하고 업데이트하려면 이전에 본 점 표기법을 사용해야합니다. 예를 들어 특정 전화 번호를 업데이트하려면 다음과 같습니다.
<code class="javascript">db.users.updateOne( { "_id": ObjectId("..."), "phones.type": "mobile" }, { $set: { "phones.$.number": "555-9876" } } )</code>
$
운영자는 쿼리와 일치하는 특정 배열 요소를 대상으로합니다. 배열과 관련된보다 복잡한 쿼리 또는 업데이트의 경우 집계 파이프 라인 사용을 고려하십시오. Aggregation은 중첩 필드를 포함하여 데이터 처리 및 변환을위한 강력한 도구를 제공합니다. 예를 들어 $unwind
사용하여 배열을 개별 문서로 해체하여 특정 요소를 더 쉽게 필터링하고 업데이트 할 수 있습니다. 중첩 필드에서 적절하게 인덱스를 사용하여 쿼리 성능을 향상시켜야합니다. 중첩 필드의 인덱스는 createIndex
명령에서 DOT 표기법을 사용하여 작성됩니다.
내장 된 문서와 배열로 확장 가능하고 유지 관리 가능한 스키마를 설계하려면 신중한 고려가 필요합니다.
이러한 모범 사례를 따르면 효율적이고 확장 가능하며 유지 관리가 쉬운 MongoDB 스키마를 만들 수 있습니다. 최적의 접근 방식은 응용 프로그램의 특정 요구에 크게 의존합니다.
위 내용은 MongoDB에 포함 된 문서 및 배열로 어떻게 작업합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!