我对MongoDB还比较陌生,我还没能找到一个解决方案.

我想迭代所有mongo数据库,并对每个数据库的每个集合运行一些命令.我可以运行以下命令来获取所有数据库名称:

db.runCommand( { listDatabases: 1 } ).databases.forEach(function (db) {
    print ("db=" + db.name);
});

但如何在forEach循环中"切换"数据库,以便对每个数据库运行查询?我想在循环中使用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如何找到字段排除特殊字符

Mongoose 查询以获取内部数组和该内部数组中的特定元素

如何在 mongodb 中将一个方面的结果合并到一个有条件的列表中?

分页时根据唯一字段mongodb获取数据

Mongoose 和 MongoDB,如何在具有多个引用的两个模型之间创建关系?

如何过滤查找mongodb的结果

如何使用 mongoose 从 MongoDb 获取数据?

查找对象是否在预保存钩子mongoose中更改

MongoDB 使用自定义表达式或函数进行排序

Mongodb将重音字符匹配为基础字符

Node.js 和 Passport 对象没有方法 validPassword

使用 Node.js 和 mongodb 处理超时

MongoDB聚合排序不起作用

Mongoose 连接认证失败

Mongoimport json 文件更新或覆盖..?

错误:Could not connect to any servers in your MongoDB Atlas cluster

初创公司应该考虑哪些数据库系统?

Flask:设置应用程序和请求特定的属性?

mongoose中的 Date.now() 和 Date.now 有什么区别?

在mongoose中创建和查找地理位置