Latest web development tutorials

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()

상기 명령의 결과가 "커서"가 표시된다 : "BtreeCursor의 tags_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"})