Bak*_*l G 13 mongodb mongo-shell mongodb-query
我是MongoDB的新手,我无法找到我正在寻找的解决方案.
我想迭代所有mongo数据库并在每个数据库的每个集合上运行一些命令.我可以运行以下命令来获取所有数据库名称:
db.runCommand( { listDatabases: 1 } ).databases.forEach(function (db) {
print ("db=" + db.name);
});
Run Code Online (Sandbox Code Playgroud)
但是如何在forEach循环中"切换"数据库以便我可以针对每个数据库运行查询?我想使用像use db.name循环内部的东西,但这不起作用.
Jua*_*rah 39
您可以使用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);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7893 次 |
| 最近记录: |