MongoDB get_indexes_with_info()函数详解
函数作用
get_indexes_with_info()函数用于获取集合中索引的信息,比如索引的名称、类型,索引键、是否为唯一索引等。
使用方法
通过db.collection.getIndexes()可以获取到当前集合中的所有索引信息,但是该函数返回的结果不够详细。如果需要获取更详细的索引信息,则可以使用get_indexes_with_info()函数.
get_indexes_with_info()函数基本语法如下:
db.collection.getIndexes({options})
其中,options为可选参数,包含以下字段:
字段名 | 描述 |
---|---|
full | 默认值为false。设置为true,则返回包含更多细节信息的索引信息 |
使用实例
实例一:
首先在test数据库中创建一个名为users的集合:
use test
db.createCollection("users")
然后往该集合中插入一些文档:
db.users.insertMany([
{name: "Tom", age: 18, gender: "M"},
{name: "Lucy", age: 20, gender: "F", interest: "dance"},
{name: "Lily", age: 22, gender: "F", interest: "hiking"},
{name: "Jim", age: 25, gender: "M", interest: "reading"}
])
在该集合上创建一些索引:
db.users.createIndex({name: 1}) // 以name属性创建一个升序索引
db.users.createIndex({age: -1}) // 以age属性创建一个降序索引
执行如下命令获取该集合中的索引信息:
db.users.getIndexesWithInfo({full: true})
返回结果如下:
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.users"
},
{
"v" : 2,
"unique" : false,
"key" : {
"name" : 1
},
"name" : "name_1",
"ns" : "test.users"
},
{
"v" : 2,
"key" : {
"age" : -1
},
"name" : "age_-1",
"ns" : "test.users"
}
]
可以看到返回的结果中包含了索引名称、类型、索引键、是否为唯一索引等详细信息。
实例二:
在test数据库中创建一个名为students的集合,并往该集合中插入一些文档:
use test
db.createCollection("students")
db.students.insertMany([
{name: "John", age: 18, gender: "M", address: {country: "US", city: "New York"}},
{name: "Mike", age: 19, gender: "M", address: {country: "US", city: "Los Angeles"}},
{name: "Lucy", age: 22, gender: "F", address: {country: "UK", city: "London"}},
{name: "Lily", age: 25, gender: "F", address: {country: "China", city: "Beijing"}}
])
对该集合中的address属性创建复合索引:
db.students.createIndex({"address.country": 1, "address.city": 1})
执行如下命令获取该集合中的复合索引信息:
db.students.getIndexesWithInfo({full: true})
返回结果如下:
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.students"
},
{
"v" : 2,
"unique" : false,
"key" : {
"address.country" : 1,
"address.city" : 1
},
"name" : "address.country_1_address.city_1",
"ns" : "test.students"
}
]
可以看到复合索引的名称为:“address.country_1_address.city_1”,其key为{"address.country": 1, "address.city": 1}。