我在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
复制相似问题