请帮助我处理mongodb查询,它将返回mongodb部署中的所有索引。此外,此查询将排除视图,并且只接受集合。请帮我同样的忙。
下面的命令可以工作,但是无法处理“视图”。
test01_rs:PRIMARY> db.adminCommand('listDatabases').databases.forEach(function(e){ if ((e.name == "admin" || e.name == "config" || e.name == "local")) return; var database=e.name; context=db.getSiblingDB(database); context.getCollectionNames().forEach(function(collection){ records=context.getCollection(collection).aggregate( [ { $indexStats: { } }, { "$group" : { _id : { name: "$name"}, accesses:{$sum:"$accesses.ops"}, since:{$min:"$accesses.since"}, } }, { "$project": { _id:0, name:"$_id.name", since:{ $dateToString: { format: "%Y-%m-%d-%H:%M:%S", date: "$since" } }, accesses:"$accesses", } } ] ).forEach(function(index){ idx=index.name; since=index.since; accesses=index.accesses; print(database+";"+collection+";"+idx+";"+since+";"+accesses); }); }); });测试03;虚报;id;2022-01-10-17:31:26;0 Test05 04;fahed;id;2022-01-10-17:31:26;0 Test05 05;fahed;id;2022-01-10-17:31:26;0
谢谢你,法德
发布于 2022-02-09 21:51:43
选项1:
db.adminCommand( { listDatabases: 1 } ).databases.forEach(
function(d){
print('databaseName:'+d.name);
db.getSiblingDB(d.name).getCollectionInfos({type:"collection"}).forEach(
function(collection){ indexes =
db.getSiblingDB(d.name).getCollection(collection.name).getIndexes();
print("Indexes on "+d.name+"."+ collection.name + ":");
printjson(indexes)
})
})这将为您提供如下输出:
databaseName:x
Indexes on x.col1:
[ { v: 2, key: { _id: 1 }, name: '_id_' } ]
databaseName:y
Indexes on y.col2:
[ { v: 2, key: { _id: 1 }, name: '_id_' } ]解释:
用mongosh 0.12.1 / mongod 4.4.12测试
备选方案2:
db.adminCommand( { listDatabases: 1 } ).databases.forEach(function(d){ print('databaseName:'+d.name);db.getSiblingDB(d.name).getCollectionInfos({type:"collection"}).forEach(function(collection){ indexes = db.getSiblingDB(d.name).getCollection(collection.name).aggregate([ {$indexStats:{}} ]); indexes.forEach(function(idx){ print("Indexes on "+d.name+"."+ collection.name + ": idx:"+idx.name+" ,since:"+idx.accesses.since+" accesses:"+idx.accesses.ops ); } ) }) })对于这个选项,您需要向用户添加一些额外的权限.
这里,从$indexStats中获取的索引详细信息包含了从access中获取的
https://stackoverflow.com/questions/71056749
复制相似问题