English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이름이 users인 컬렉션에 다음과 같은 문서를 삽입했습니다. 예를 들어–
db.users.insert( { "address": { "city": "Los Angeles" "state": "California" "pincode": ""123" }, "tags": [ "music", "cricket", "blogs" ], "name": "Tom Benzamin" } )
위의 문서는 address 서브 문서와 태그 배열을 포함하고 있습니다.
사용자의 태그를 기준으로 사용자 문서를 검색하려면, 컬렉션의 tags 배열에 인덱스를 생성합니다.
배열에 인덱스를 생성하면 배열의 각 필드에 각각의 인덱스 항목을 생성합니다. 따라서 우리의 예제에서 tags 배열에 인덱스를 생성하면 music, cricket, blogs의 값을 각각의 독립적인 인덱스로 생성합니다.
tags 배열에 인덱스를 생성하려면 다음 코드를 사용하세요-
>db.users.createIndex({"tags":1} { "createdCollectionAutomatically": false "numIndexesBefore": 2, "numIndexesAfter": 3, "ok": 1 } >
인덱스를 생성한 후, tags 필드에서 검색할 수 있습니다. 예를 들어-
>db.users.find({tags:"cricket"}).pretty(){ "_id" : ObjectId("5dd7c927f1dd4583e7103fdf"), "address" : { "city" : "Los Angeles", "state" : "California", "pincode" : "123" }, "tags" : [ "music", "cricket", "blogs" ], "name" : "Tom Benzamin" } >
정확한 인덱스가 사용되었는지 확인하려면 다음 explain 명령어를 사용하세요-
>db.users.find({tags:"cricket"}).explain()
이는 다음과 같은 결과를 제공합니다-
{ "queryPlanner": { "plannerVersion": 1, "namespace": "mydb.users" "indexFilterSet": false "tags": { } }, "queryHash": ",9D3B61A7", "planCacheKey": "049997 "keyPattern": { "tags": 1 }, 1", }, "isPartial": false, 2, "indexBounds": { "tags" : [ "[\"cricket\", "cricket\"]" } } }, }, "host": "Krishna", 27017, "version": "",4.2.1", "gitVersion": "edf6d45851c0b9ee15548f0f847df141764a317e" }, "ok": 1 } >
위 명령어는 “cursor”를 생성했습니다: “BtreeCursor tags_1”는 올바른 색인이 사용되었음을 확인합니다.
city, state 및 pincode 필드에 따라 문서를 검색하려고 할 때, 모든 이 필드가 주소 서브 문서 필드의 일부이므로 서브 문서의 모든 필드에 색인을 생성하겠습니다.
서브 문서의 모든 세 필드에 색인을 생성하려면 다음 코드를 사용하십시오-
>db.users.createIndex({"address.city":1"address.state":1"address.pincode":1} { "numIndexesBefore": 4, "numIndexesAfter": 4, "note": "all indexes already exist", "ok": 1 } >
색인을 생성한 후, 이 색인을 사용하여 어떤 서브 문서 필드든지 검색할 수 있습니다. 예를 들어:
>db.users.find({"address.city":"Los Angeles"}).pretty(){ "_id" : ObjectId("5dd7c927f1dd4583e7103fdf"), "address" : { "city" : "Los Angeles", "state" : "California", "pincode" : "123" }, "tags" : [ "music", "cricket", "blogs" ], "name" : "Tom Benzamin" }
기억해야 할 것은, 쿼리 표현식이 지정된 인덱스의 순서를 따라야 합니다. 따라서 위에 생성된 인덱스는 다음과 같은 쿼리를 지원합니다-
>db.users.find({"address.city":"Los Angeles","address.state":"California"}).pretty(){ "_id" : ObjectId("5dd7c927f1dd4583e7103fdf"), "address" : { "city" : "Los Angeles", "state" : "California", "pincode" : "123" }, "tags" : [ "music", "cricket", "blogs" ], "name" : "Tom Benzamin" } >