MongoDB 中的索引是一种特殊的数据结构,它保存创建索引的少量文档字段的数据。索引提高了数据库中搜索操作的速度,因为不是搜索整个文档,而是对仅包含少量字段的索引执行搜索。另一方面,由于索引使用了额外的写入和额外数据空间,索引太多会妨碍插入,更新和删除操作的性能。
如何在 MongoDB 中创建索引
语法:
db.collection_name.createIndex({field_name: 1 or -1})
值 1 表示升序,-1 表示降序。
例如,我有一个集合studentdata
。此集合中的文档包含以下字段:student_name
,student_id
和student_age
假设我想按升序在student_name
字段上创建索引:
db.studentdata.createIndex({student_name: 1})
输出:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
我们在student_name
上创建了索引,这意味着当有人根据student_name
搜索文档时,搜索速度会更快,因为索引将用于此搜索。因此,在字段中创建将在集合中频繁搜索的索引非常重要。
MongoDB – 查找集合中的索引
我们可以使用getIndexes()
方法来查找在集合上创建的所有索引。此方法的语法是:
db.collection_name.getIndexes()
因此,要获取studentdata
集合的索引,命令将是:
> db.studentdata.getIndexes()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.studentdata"
},
{
"v" : 2,
"key" : {
"student_name" : 1
},
"name" : "student_name_1",
"ns" : "test.studentdata"
}
]
输出显示我们在此集合中有两个索引。在_id
上创建的默认索引以及我们在student_name
字段上创建的索引。
MongoDB – 删除集合中的索引
您可以删除特定索引或所有索引。
删除特定索引:
为此,使用了dropIndex()
方法。
db.collection_name.dropIndex({index_name: 1})
让我们删除我们在集合studentdata
中的student_name
字段上创建的索引。这个命令:
db.studentdata.dropIndex({student_name: 1})
nIndexesWas
:显示执行此命令之前有多少索引
ok: 1
:表示命令执行成功。
删除所有索引:
要删除集合的所有索引,我们使用dropIndexes()
方法。
dropIndexs()
方法的语法:
db.collection_name.dropIndexes()
假设我们想要删除studentdata
集合的所有索引。
db.studentdata.dropIndexes()
消息“为集合删除的非_id
索引”表示默认索引_id
仍将保留,不能删除。这意味着使用此方法我们只能删除我们创建的索引,我们不能删除在_id
字段上创建的默认索引。