pymongo和js执行例子

目标:列出所有机构库中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

posted @ 2022-12-01 14:39  坚强的小蚂蚁  阅读(49)  评论(0编辑  收藏  举报