目标:列出所有机构库中device表里的字段信息
一. 使用pymongo
1.列出所有机构的库, 格式为636B51BE22D2180001000B22_db
import pymongo
import re
client = pymongo.MongoClient(host='10.30.110.21', port=27017)
#列出所有数据库名字
#新版本的mongo可能会弃用database_names,使用client.list_databases()
dbs = client.database_names()
#target_list = []
for org in dbs[1:3]:
result=re.search('([A-Z0-9]){24}|(ABCDE)_db', org)
if result:
print(org)
db = client[org]
coll=db.device
result = coll.find({}, {'name': 1, 'model': 1, 'serialNumber': 1, 'oid': 1})
for x in result:
print(x['_id'], x['name'], x['model'], x['serialNumber'], x['oid'], sep=',')
#target_list.append(result)
注意:
1)find查找中,字段需要加上引号。
2)db = client[org] 这里的org是变量,要用[], 不能使用client.org
3)sep=','表示输出内容间,用逗号分隔,默认是空格分隔
4)re匹配中还需要添加一个 或 匹配,因为ABCDE_db中也有设备
二.使用js
var db= db.getSiblingDB("admin");
dbs = db.runCommand({ "listDatabases": 1 }).databases;
dbs.forEach(function(database){
db = db.getSiblingDB(database.name);
var reg = /([A-Z0-9]){24}_db/;
if(reg.test(db)){
cols =db.getCollectionNames();
cols.forEach(function(col){
if (col === 'device') {
var target = db[col].find({}, {name: 1, model: 1, serailNumber: 1, oid: 1});
target.forEach(function(field){
printjson(field);
})
}
})
}
})
注意:
1)db.col不行,要用db[col]
2)变量语句最后要加上";"
3)输出要用printjson
标签:db,client,例子,result,org,js,pymongo,col From: https://www.cnblogs.com/regit/p/16941356.html