遍历所有 Mongo 个数据库
Iterate over all Mongo database
我是 MongoDB 的新手,我一直没能找到我正在寻找的解决方案。
我想遍历所有 mongo 个数据库和 运行 每个数据库的每个集合上的一些命令。我可以 运行 以下命令获取所有数据库名称:
db.runCommand( { listDatabases: 1 } ).databases.forEach(function (db) {
print ("db=" + db.name);
});
但是如何在 forEach 循环中 "switch" 数据库以便我可以 运行 查询每个数据库?我想在循环中使用类似 use db.name
的东西,但这不起作用。
您可以使用 db.getSiblingDB()
在数据库之间切换,使用 db.getCollectionNames()
获取集合名称。请注意,您必须 运行 来自 admin
数据库的第一个命令才能获取数据库列表。 shell 中实现您想要执行的操作的简短脚本如下所示:
// Switch to admin database and get list of databases.
db = db.getSiblingDB("admin");
dbs = db.runCommand({ "listDatabases": 1 }).databases;
// Iterate through each database and get its collections.
dbs.forEach(function(database) {
db = db.getSiblingDB(database.name);
cols = db.getCollectionNames();
// Iterate through each collection.
cols.forEach(function(col) {
// Do something with each collection.
print(col);
});
});
我是 MongoDB 的新手,我一直没能找到我正在寻找的解决方案。
我想遍历所有 mongo 个数据库和 运行 每个数据库的每个集合上的一些命令。我可以 运行 以下命令获取所有数据库名称:
db.runCommand( { listDatabases: 1 } ).databases.forEach(function (db) {
print ("db=" + db.name);
});
但是如何在 forEach 循环中 "switch" 数据库以便我可以 运行 查询每个数据库?我想在循环中使用类似 use db.name
的东西,但这不起作用。
您可以使用 db.getSiblingDB()
在数据库之间切换,使用 db.getCollectionNames()
获取集合名称。请注意,您必须 运行 来自 admin
数据库的第一个命令才能获取数据库列表。 shell 中实现您想要执行的操作的简短脚本如下所示:
// Switch to admin database and get list of databases.
db = db.getSiblingDB("admin");
dbs = db.runCommand({ "listDatabases": 1 }).databases;
// Iterate through each database and get its collections.
dbs.forEach(function(database) {
db = db.getSiblingDB(database.name);
cols = db.getCollectionNames();
// Iterate through each collection.
cols.forEach(function(col) {
// Do something with each collection.
print(col);
});
});