Limit the Number of Entries Scanned限制扫描的条目数

This tutorial describes how to create indexes to limit the number of index entries scanned for queries that includes a $text expression and equality conditions.本教程介绍如何创建索引,以限制针对包含$text表达式和相等条件的查询扫描的索引项的数量。

A collection inventory contains the following documents:inventory集合包含以下文档:

{ _id: 1, dept: "tech", description: "lime green computer" }
{ _id: 2, dept: "tech", description: "wireless red mouse" }
{ _id: 3, dept: "kitchen", description: "green placemat" }
{ _id: 4, dept: "kitchen", description: "red peeler" }
{ _id: 5, dept: "food", description: "green apple" }
{ _id: 6, dept: "food", description: "red potato" }

Consider the common use case that performs text searches by individual departments, such as:考虑个别部门执行文本搜索的常用情况,例如:

db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )

To limit the text search to scan only those documents within a specific dept, create a compound index that first specifies an ascending/descending index key on the field dept and then a text index key on the field description:

db.inventory.createIndex(
   {
     dept: 1,
     description: "text"
   }
)

Then, the text search within a particular department will limit the scan of indexed documents. 然后,特定部门内的文本搜索将限制索引文档的扫描。For example, the following query scans only those documents with dept equal to kitchen:例如,以下查询仅扫描dept等于kitchen的文档:

db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )

Note

See also参阅

Text Indexes