获取 MongoDB 中的索引列表

发布于

在MongoDB中,您可以使用该方法获取集合上的索引列表。getIndexes()

还可以遍历数据库中的每个集合以返回数据库中的所有索引。

列出特定集合的索引

该方法返回给定集合上的索引。将部件替换为集合的实际名称。db.collection.getIndexes()``collection

更具体地说,此方法返回一个数组,该数组保存一个文档列表,这些文档标识和描述集合上的现有索引,包括隐藏索引。

例:

db.posts.getIndexes()

输出:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"title" : 1
		},
		"name" : "title_1"
	},
	{
		"v" : 2,
		"key" : {
			"tags" : 1
		},
		"name" : "tags_1"
	}
]

在此示例中,集合有三个索引。posts

列出当前数据库中的所有索引

我们可以将前面的示例更进一步,让它遍历当前数据库中的所有集合,列出每个集合的所有索引。

示例代码:

db.getCollectionNames().forEach(function(collection) {
    indexes = db.getCollection(collection).getIndexes();
    print("Indexes on " + collection + ":");
    printjson(indexes);
});

示例结果:

Indexes on articles: [ { “v” : 2, “key” : { “_id” : 1 }, “name” : “id” } ] Indexes on employees: [ { “v” : 2, “key” : { “_id” : 1 }, “name” : “id” } ] Indexes on posts: [ { “v” : 2, “key” : { “_id” : 1 }, “name” : “id” }, { “v” : 2, “key” : { “title” : 1 }, “name” : “title_1” }, { “v” : 2, “key” : { “tags” : 1 }, “name” : “tags_1” } ] Indexes on products: [ { “v” : 2, “key” : { “_id” : 1 }, “name” : “id” } ]

在此示例中,有四个集合:文章、员工、帖子和产品,每个集合都有一个或多个索引。