使用索引优化查询
在此页面上
Overview
在此页面上,您可以查看可复制的代码示例,这些示例展示了如何使用Kotlin Sync驾驶员管理不同类型的索引。
提示
要学习;了解有关使用索引的更多信息,请参阅使用索引指南。 要学习;了解有关此页面上显示的任何索引的更多信息,请参阅每个部分中提供的链接。
要使用本页中的示例,请将代码示例复制到示例应用程序或您自己的应用程序中。 请务必将代码示例中的所有占位符(例如 <connection string URI>
)替换为 MongoDB 部署的相关值。
示例应用程序
您可以使用以下示例应用程序来测试本页上的代码示例。 要使用示例应用程序,请执行以下步骤:
确保您已在 Maven 或 Gradle项目中安装Kotlin Sync驾驶员程序。
复制以下代码并将其粘贴到新的
.kt
文件中。从此页面复制代码示例,并将其粘贴到文件中的指定行。
1 import com.mongodb.ConnectionString 2 import com.mongodb.MongoClientSettings 3 import com.mongodb.client.model.* 4 import com.mongodb.kotlin.client.* 5 import org.bson.Document 6 7 fun main() { 8 val uri = "<connection string URI>" 9 10 val settings = MongoClientSettings.builder() 11 .applyConnectionString(ConnectionString(uri)) 12 .retryWrites(true) 13 .build() 14 15 // Create a new client and connect to the server 16 val mongoClient = MongoClient.create(settings) 17 val database = mongoClient.getDatabase("<database name>") 18 val collection = database.getCollection<Document>("<collection name>") 19 20 // Start example code here 21 22 // End example code here 23 }
单字段索引
以下示例在指定字段上创建一个升序索引:
collection.createIndex(Indexes.ascending("<field name>"))
要了解有关单字段索引的更多信息,请参阅单字段索引指南。
复合索引
以下示例在指定字段上创建复合索引:
collection.createIndex(Indexes.ascending("<field name 1>", "<field name 2>"))
要了解有关复合索引的更多信息,请参阅复合索引指南。
Multikey Index
以下示例在指定的数组值字段上创建多键索引:
collection.createIndex(Indexes.ascending("<array field name>"))
地理空间索引
以下示例在包含GeoJSON对象的指定字段上创建2 dsphere索引:
collection.createIndex(Indexes.geo2dsphere("<GeoJSON object field>"))
唯一索引
以下示例在指定字段上创建唯一索引:
val indexOptions = IndexOptions().unique(true) collection.createIndex(Indexes.ascending("<field name>"), indexOptions)
通配符索引(Wildcard Index)
以下示例在指定集合中创建通配符索引:
collection.createIndex(Indexes.ascending("$**"))
聚集索引
以下示例将在_id
字段上创建一个具有集群索引的新集合:
val clusteredIndexOptions = ClusteredIndexOptions( Indexes.ascending("_id"), true ) val collection = database.createCollection("<collection name>", clusteredIndexOptions)
Atlas Search 索引管理
以下部分包含描述如何管理Atlas Search索引的代码示例。
要学习;了解有关Atlas Search索引的更多信息,请参阅Atlas Search和 Vector Search 索引指南。
创建Atlas Search索引
以下示例在指定字段上创建Atlas Search索引:
val index = Document("mappings", Document("dynamic", true)) collection.createSearchIndex("<index name>", index)
要了解有关创建 serach 索引的更多信息,请参阅创建Atlas Search索引指南。
搜索索引列表
以下示例将打印指定集合中的Atlas Search索引列表:
val results = collection.listSearchIndexes() results.forEach { result -> println(result) }
要了解有关列出Atlas Search索引的更多信息,请参阅列出Atlas Search索引指南。
更新搜索索引
以下示例使用指定的新索引定义更新现有Atlas Search索引:
val newIndex = Document("mappings", Document("dynamic", true)) collection.updateSearchIndex("<index name>", newIndex)
要了解有关更新Atlas Search索引的更多信息,请参阅更新Atlas Search索引指南。
删除Atlas Search索引
以下示例删除具有指定名称的Atlas Search索引:
collection.dropIndex("<index name>")
要了解有关删除Atlas Search索引的更多信息,请参阅删除Atlas Search索引指南。
Text Index
以下示例在指定string字段上创建文本索引:
collection.createIndex(Indexes.text("<field name>"))
删除索引
以下示例删除具有指定名称的索引:
collection.dropIndex("<index name>")