db.collection.hideIndex()
On this page本页内容
Definition定义
db.collection.hideIndex()
New in version 4.4.4.4版新增。Importantmongosh Method
This page documents a
mongosh
method. This is not the documentation for database commands or language-specific drivers, such as Node.js.For the database command, see the
index.hidden
collection option set using thecollMod
command.For MongoDB API drivers, refer to the language-specific MongoDB driver documentation.
For the legacy
mongo
shell documentation, refer to the documentation for the corresponding MongoDB Server release:Hides an existing index from the query planner.从查询计划器隐藏现有索引。An index hidden from the query planner is not evaluated as part of query plan selection.查询计划器中隐藏的索引不会作为查询计划选择的一部分进行评估。By hiding an index from the planner, users can evaluate the potential impact of dropping an index without actually dropping the index.通过向计划器隐藏索引,用户可以在不实际删除索引的情况下评估删除索引的潜在影响。If the impact is negative, the user can unhide the index instead of having to recreate a dropped index.如果影响是负面的,用户可以取消隐藏索引,而不必重新创建已删除的索引。And because indexes are fully maintained while hidden, the indexes are immediately available for use once unhidden.由于索引在隐藏时是完全维护的,因此一旦取消隐藏,索引就可以立即使用。For details, see Hidden Indexes.有关详细信息,请参阅隐藏索引。
Syntax语法
db.collection.hideIndex(<index>)
Parameters参数
The db.collection.hideIndex()
method takes the following parameter:db.collection.hideIndex()
方法采用以下参数:
index | string or document | Tip db.collection.getIndexes() method to find the index name or the index specification document. db.collection.getIndexes() 方法查找索引名称或索引规范文档。text 索引,请指定索引名称。 |
The db.collection.hideIndex()
is a mongosh
shell wrapper for the collMod
command.db.collection.hideIndex()
是collMod
命令的mongosh
shell包装器。
Behavior行为
Feature Compatibility Version功能兼容性版本
To hide an index, you must have featureCompatibilityVersion set to 若要隐藏索引,必须将4.4
or greater. featureCompatibilityVersion
设置为4.4
或更高版本。However, once hidden, the index remains hidden even with featureCompatibilityVersion set to 然而,一旦隐藏,即使在MongoDB 4.4二进制文件中将4.2
on MongoDB 4.4 binaries.featureCompatibilityVersion
设置为4.2
,索引也会保持隐藏状态。
Restrictions限制
You cannot hide the 不能隐藏_id
index._id
索引。
Index Modifications Reset Statistics索引修改重置统计信息
Hiding an unhidden index resets its 隐藏未隐藏的索引会重置其$indexStats
.$indexStats
。
No-op
Hiding an already hidden index has no effect on the index. However, the operation will still generate an empty oplog entry.隐藏已隐藏的索引对索引没有影响。但是,该操作仍然会生成一个空的oplog条目。
Access Control访问控制
If the deployment enforces authentication/authorization, you must have the 如果部署强制执行身份验证/授权,则您必须在集合的数据库中具有collMod
privilege in the collection's database.collMod
权限。
The built-in role 内置角色dbAdmin
provides the required privileges.dbAdmin
提供所需的权限。
Example实例
The following example hides an existing index.以下示例隐藏现有索引。
First, use 首先,使用db.collection.createIndex()
to create an index without hiding:db.collection.createIndex()
创建一个不隐藏的索引:
db.restaurants.createIndex( { borough: 1, ratings: 1 } );
To hide the index, you can specify either the index key specification document or the index name to the 要隐藏索引,可以指定索引键规范文档或db.collection.hideIndex()
method. The following specifies the index name:db.collection.hideIndex()
方法的索引名称。以下内容指定索引名称:
db.restaurants.hideIndex( "borough_1_ratings_1" );
To verify, run 要进行验证,请在db.collection.getIndexes()
on the restaurants
collection:restaurants
集合上运行db.collection.getIndexes()
:
db.restaurants.getIndexes();
The operation returns the following information:该操作返回以下信息:
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"borough" : 1,
"ratings" : 1
},
"name" : "borough_1_ratings_1",
"hidden" : true
}
]
The 只有当值为hidden
index option is only returned if the value is true
.true
时,才会返回hidden
索引选项。