我在mongo中有一组数据库,每个数据库都有一组集合。我需要遍历所有的数据库和集合,以确定是否在任何集合中使用了key。有了googling,我就可以遍历数据库和集合了。但是我找不到在任何集合中是否使用了某个键。下面是我在mongodb shell中执行的脚本。
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条件中。
发布于 2021-09-22 12:26:20
请注意,find返回文档列表,因此实际上您需要对该文档的键进行另一次迭代。
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')
            })
        )
    )
});https://stackoverflow.com/questions/69280100
复制相似问题