限制在自管理部署上扫描的文本索引项数量
MongoDB5.0 已于 10 月2024 结束生命周期。不再支持此版本的文档。要升级5.0 部署,请参阅 MongoDB6 。0 升级程序。
本教程介绍如何创建索引,以限制针对包含 $text
表达式和相等条件的查询扫描的索引项数量。
集合 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" }
考虑按各个部门执行文本搜索的常见用例,例如:
db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )
要将文本搜索限制为仅扫描特定dept
内的文档,请创建一个复合索引,该索引首先指定字段dept
上的升序/降序索引键,然后指定字段description
上的text
索引键:
db.inventory.createIndex( { dept: 1, description: "text" } )
然后,特定部门内的搜索将限制对已建立索引的文档的扫描。例如,以下查询仅扫描dept
等于kitchen
的文档:
db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )