Overview
在本指南中,您可以学习;了解如何使用Java Reactive Streams驾驶员中的构建者指定索引。Indexes 构建器提供了用于构建以下类型索引的辅助方法:
索引存储集合数据集的子集。索引存储特定字段或字段设立的值,按字段的值排序。
Indexes 类为所有MongoDB索引类型提供静态工厂方法。每个方法都返回一个BSON实例,您可以将其传递给createIndex().
提示
升序索引
升序索引使您能够按索引字段的值从小到大对查询结果进行排序。
为了创建升序索引,首先调用 ascending() 构建器方法来创建一个表示索引文档的Bson实例,并传递要索引的一个或多个字段的名称。然后,对该集合调用 createIndex() 方法,并传递包含索引文档的 Bson实例。
注意
如果单个字段有升序或降序索引,MongoDB 可以使用任一方向的索引进行排序。
以下示例对name字段指定升序索引:
Bson ascendingIndex = ascending("name"); Publisher<String> result = collection.createIndex(ascendingIndex); Mono.from(result).block();
降序索引
降序索引使您能够按索引字段的值从大到小对查询结果进行排序。
要创建降序索引,请首先调用降序()构建器方法创建一个表示索引文档的 Bson实例,并传递要索引的一个或多个字段的名称。然后,对该集合调用 createIndex() 方法,并传递包含索引文档的 Bson实例。
以下示例指定对 capacity 字段进行降序索引:
Bson descendingIndex = descending("capacity"); Publisher<String> result = collection.createIndex(descendingIndex); Mono.from(result).block();
复合索引
为了创建复合索引,首先调用compoundIndex()构建器方法创建一个表示索引文档的 Bson实例,并传递要索引的字段的名称。然后,对该集合调用 createIndex() 方法,并传递包含索引文档的 Bson实例。
以下示例指定了一个复合索引,由capacity和year字段的降序索引以及name字段的升序索引组成:
Bson compoundIndex = compoundIndex(descending("capacity", "year"), ascending("name")); Publisher<String> result = collection.createIndex(compoundIndex); Mono.from(result).block();
Text Indexes
文本索引按索引字段中的文本对文档进行分组。
为了创建文本索引,首先调用text()构建器方法创建一个表示索引文档的Bson实例,并传递要索引的字段的名称。然后,对该集合调用 createIndex() 方法,并传递包含索引文档的 Bson实例。
以下示例在 "theaters" 字段上指定文本索引键:
Bson textIndex = text("theaters"); Publisher<String> result = collection.createIndex(textIndex); Mono.from(result).block();
哈希(Hashed)索引
哈希索引按索引字段中的哈希值对文档进行分组。
为了创建哈希索引,首先调用哈希()构建器方法创建一个表示索引文档的Bson实例,并传递要索引的字段的名称。然后,对该集合调用 createIndex() 方法,并传递包含索引文档的 Bson实例。
以下示例在capacity字段上指定哈希索引:
Bson hashedIndex = hashed("capacity"); Publisher<String> result = collection.createIndex(hashedIndex); Mono.from(result).block();
地理空间索引
2dsphere索引按索引字段中的坐标对文档进行分组。
为了创建2dsphere索引,首先调用geo2dsphere()构建器方法创建一个表示索引文档的Bson实例,并传递要索引的一个或多个字段的名称。然后,对该集合调用 createIndex() 方法,并传递包含索引文档的 Bson实例。
以下示例在location字段上指定2dsphere索引:
Bson geo2dsphereIndex = geo2dsphere("location"); Publisher<String> result = collection.createIndex(geo2dsphereIndex); Mono.from(result).block();