本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
單一欄位索引
單一欄位索引會儲存文件集合中任何單一欄位的資訊。根據預設,所有集合在 _id 欄位上都有索引。您可以新增其他索引,以加速重要的查詢和操作。
下列情況下,單一欄位索引很有幫助:
-
您的應用程式經常根據特定欄位的值查詢或篩選文件。
-
您需要依特定欄位有效率地排序文件。
-
您想要透過建立唯一索引,確保集合中文件間特定欄位的唯一性。
支援的索引屬性
| 選項 | 3.6 | 4.0 | 5.0 | 8.0 | 彈性叢集 |
|---|---|---|---|---|---|
| name | 是 | 是 | 是 | 是 | 是 |
| 唯一 | 是 | 是 | 是 | 是 | 是 |
| 稀疏 * | 是 | 是 | 是 | 是 | 是 |
| partialFilterExpression * | 否 | 否 | 是 | 是 | 否 |
| expireAfterSeconds | 是 | 是 | 是 | 是 | 是 |
* sparse和 partialFilterExpression選項無法在相同的索引定義中一起使用。如果您嘗試使用這些選項建立索引,它將會失敗,並出現下列錯誤:
Error in specification: cannot mix partialFilterExpression and sparse options
建立單一欄位索引
使用 createIndex()方法來建立單一欄位索引。語法為:db.collection.createIndex(<key>, <options>)。
key 參數是 JSON 文件,指定 欄位和索引排序順序:
{ "<field>": <1 (ascending)|-1 (descending)> }
options 參數是 JSON 文件,可指定索引的選項:
{ "name": "<name>", "unique": <true | false>, "sparse": <true | false>, "partialFilterExpression": <filter expression>, "expireAfterSeconds": <seconds before expiry> }
如需建立單一欄位索引的範例,請參閱索引屬性。