fields_optimize.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from pymongo import MongoClient
  2. from bson.objectid import ObjectId
  3. from util.mogodb_helper import MongoDBInterface # 调整导入以正确引用文件名
  4. # 参考库配置
  5. ref_config = {
  6. "ip_port": "127.0.0.1:27088",
  7. "user": "viewdata",
  8. "password": "viewdata",
  9. "db": "qfw",
  10. "collection": "zktest_data_info_0307"
  11. }
  12. # 对比库配置
  13. comp_config = {
  14. "ip_port": "127.0.0.1:27088",
  15. "user": "viewdata",
  16. "password": "viewdata",
  17. "db": "qfw",
  18. "collection": "bidding"
  19. }
  20. # 最终存储库配置
  21. final_config = {
  22. "host": "192.168.3.206",
  23. "port": 27080,
  24. "dbname": "data_quality",
  25. "collection_name": "fields_optimize"
  26. }
  27. # 连接到MongoDB(参考库和对比库使用MongoDBInterface类)
  28. ref_mdb = MongoDBInterface(ref_config)
  29. comp_mdb = MongoDBInterface(comp_config)
  30. final_client = MongoClient(final_config["host"], final_config["port"], socketTimeoutMS=30000)
  31. final_db = final_client[final_config["dbname"]]
  32. final_collection = final_db[final_config["collection_name"]]
  33. # 比较字段
  34. fields_to_compare = ['area', 'city', 'district']
  35. # 获取参考库集合中的所有文档
  36. ref_collection_name = ref_config['collection']
  37. comp_collection_name = comp_config['collection']
  38. for ref_doc in ref_mdb.db[ref_collection_name].find(): # 使用pymongo的find()方法
  39. comp_doc = comp_mdb.find_by_id(comp_collection_name, ref_doc['_id']) # 使用MongoDBInterface方法
  40. if not comp_doc:
  41. # 如果在对比库中找不到文档,可能需要记录或处理
  42. continue
  43. differences = {}
  44. for field in fields_to_compare:
  45. if ref_doc.get(field) != comp_doc.get(field):
  46. differences[field] = {'ref': ref_doc.get(field), 'comp': comp_doc.get(field)}
  47. if differences:
  48. # 如果有差异,将它们添加到最终的集合中
  49. final_collection.insert_one({
  50. 'id': ref_doc['_id'], # 保留原始的_id作为id字段
  51. 'ref_doc': ref_doc,
  52. 'comp_doc': comp_doc,
  53. 'differences': differences
  54. })
  55. # 断开数据库连接
  56. ref_mdb.disconnect()
  57. comp_mdb.disconnect()
  58. final_client.close()