몽고DB 튜토리얼login
몽고DB 튜토리얼
작가:php.cn  업데이트 시간:2022-04-21 17:49:03

MongoDB 고급 인덱싱


다음 문서 모음(사용자)을 고려하세요.

{
   "address": {
      "city": "Los Angeles",
      "state": "California",
      "pincode": "123"
   },
   "tags": [
      "music",
      "cricket",
      "blogs"
   ],
   "name": "Tom Benzamin"
}

위 문서에는 주소 하위 문서와 태그 배열이 포함되어 있습니다.


인덱스 배열 필드

태그를 기반으로 사용자를 검색한다고 가정해 보겠습니다. 이를 위해서는 컬렉션의 배열 태그를 인덱싱해야 합니다.

배열에 인덱스를 생성하려면 배열의 각 필드를 차례로 인덱싱해야 합니다. 그래서 배열 태그에 대한 인덱스를 생성할 때 음악, 크리켓, 블로그의 세 가지 값에 대해 별도의 인덱스를 생성하게 됩니다.

다음 명령을 사용하여 배열 인덱스를 생성합니다.

>db.users.ensureIndex({"tags":1})

인덱스를 생성한 후 다음과 같이 컬렉션의 태그 필드를 검색할 수 있습니다.

>db.users.find({tags:"cricket"})

인덱스를 사용 중이라면 설명 명령을 사용할 수 있습니다:

>db.users.find({tags:"cricket"}).explain()

위 명령의 실행 결과는 "cursor": "BtreeCursor tagged_1"을 표시하며 이는 인덱스가 사용되었음을 의미합니다.


색인 하위 문서 필드

시, 주, 핀코드 필드를 통해 문서를 검색해야 한다고 가정해 보겠습니다. 이러한 필드는 하위 문서의 필드이므로 색인을 생성해야 합니다. 하위 문서 .

다음 명령을 사용하여 하위 문서의 세 필드에 대한 색인을 생성합니다.

>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})

색인이 생성되면 하위 문서의 필드를 사용하여 데이터를 검색할 수 있습니다.

>db.users.find({"address.city":"Los Angeles"})

쿼리 표현식은 지정된 인덱스의 순서를 따라야 한다는 점을 기억하세요. 따라서 위에서 생성된 인덱스는 다음 쿼리를 지원합니다:

>db.users.find({"address.city":"Los Angeles","address.state":"California"})

또한 다음 쿼리도 지원합니다:

>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})

PHP 중국어 웹사이트