首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongodb:循环遍历所有数据库和集合以查找已使用的字段(键)?

Mongodb:循环遍历所有数据库和集合以查找已使用的字段(键)?
EN

Stack Overflow用户
提问于 2021-09-22 07:42:19
回答 1查看 79关注 0票数 1

我在mongo中有一组数据库,每个数据库都有一组集合。我需要遍历所有的数据库和集合,以确定是否在任何集合中使用了key。有了googling,我就可以遍历数据库和集合了。但是我找不到在任何集合中是否使用了某个键。下面是我在mongodb shell中执行的脚本。

代码语言:javascript
运行
复制
db = db.getSiblingDB("admin");
var dbs = db.runCommand({ "listDatabases": 1 }).databases;
dbs.forEach(function(database) {
  db = db.getSiblingDB(database.name);
  cols = db.getCollectionNames();
  cols.forEach(function(col) {
    db[col].find({}).forEach(function(field) {
        //print(field);
        if( field == "testKey"){
            print(col + " has column")
        }
    });
    
});

});

如果字段等于"testKey“,我如何更正此脚本,然后打印该数据库和集合。目前,尽管我在一些集合中有"testKey“,但这并不包含在if条件中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-22 12:26:20

请注意,find返回文档列表,因此实际上您需要对该文档的键进行另一次迭代。

代码语言:javascript
运行
复制
db = db.getSiblingDB("admin");
var dbs = db.runCommand({ "listDatabases": 1 }).databases;
dbs.forEach(function (database) {
    db = db.getSiblingDB(database.name);
    cols = db.getCollectionNames();
    cols.forEach(col =>
        db[col].find({}).forEach(doc =>
            Object.keys(doc).forEach(key => {
                print(key === 'testKey')
            })
        )
    )
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69280100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档