python查找mongo中符合条件的json记录

一、需求:

之前有次需要临时查找mongo中存储的json串,符合特定条件的记录;
举个例子,mongo中记录如下图:
在这里插入图片描述
其中每条存储的数据大概为:

[{"createUser": "Zxtech","paramName": "OrderNo","paramValue": "PSO20231100001","type": 1,"updateUser": "Zxtech"},{"createUser": "Zxtech","paramName": "ADRTy","paramValue": "NA","updateUser": "Zxtech"},......
]

比如,我要找出所有 paramName 是 ADRTy , 并且 paramValue 为 NA 的所有记录
正常找一般怎么做的呢?!挨个把文件下载下来,然后去找符合条件的?或者是java写个接口,调一下?都可以,但是好像都比较麻烦。。。

二、解决:

python连接mongo,然后遍历所有记录,每条记录取出json,然后把json中符合条件的记录,放到一个文件中。

代码:

import pymongo
import gridfs
import json
import oscondition = input("\n>>>请输入条件: \n")
# 解析条件  'paramName': 'ZZ156', 'paramValue': '标准_EX-M01'
# condition = 'V=1.0&&BUFtype=HYD'   ZZ156=标准_EX-M01&&Languages=中文
conditions = condition.split('&&')
cond_arr = []
for c in conditions:cc = c.split('=')p_name = cc[0]p_value = cc[1]t_arr = (p_name, p_value)cond_arr.append(t_arr)
print(cond_arr)mongo_ip = input("\n>>>请输入mongo ip: \n")
if mongo_ip is None or mongo_ip == '':mongo_ip = '192.168.51.19'
print('>>>连接mongo:')
# client = pymongo.MongoClient('192.168.0.222', connect=False)
client = pymongo.MongoClient(mongo_ip, connect=False)
db = client['pso_param']
# 存储到mongodb
# 从mongodb取出文件
fs = gridfs.GridFS(db)
gf = fs.find()def validate_cond(param_name, param_value):# cond_arr = [(V, 1.0), ('BUFtype', HYD)]for cond in cond_arr:# (V, 1.0)if param_name == cond[0] and param_value == cond[1]:return Truereturn Falsepassfor a in gf:bs = a.read()string = str(bs, 'utf-8')print('>>>文件名:', a.filename)try:param_json = json.loads(string)except:print('json转换报错了')continueif param_json is None:print('continue')continue# print(param_json)# 查V=1.0 且 BUFtype=HYD的所有任务;valid_res = []# [{'paramName': 'Languages', 'paramValue': '中文', ...}, {...}, ...]for j in param_json:if j is not None and 'paramValue' in j:val_res = validate_cond(j['paramName'], j['paramValue'])if val_res:valid_res.append(val_res)if len(valid_res) == len(cond_arr):print(a.filename + "\n")io = open("d:/ccc.txt", 'a', )# 不存在文件,写入文件内容io.write(a.filename + "\n")io.close()print('执行结束')

三、打包

生成可执行的exe文件(参数-F 就是为了生成exe的)

pyinstaller -F mongo.py

四、效果

先在新建个txt文件,路径为:d:/ccc.txt
首先是提示输入查询条件,例:V=1.0&&BUFtype=HYD
然后是提示输入mongo的ip,例:192.168.0.222

运行完,查看d盘下的ccc.txt文件就可以了。
(注:open(“d:/ccc.txt”, ‘a’, ) 其中的‘a’第二次运行时是不会删除原内容的)

五、扩展

这个可以写的更好,更完善,本人这个只是用一次就扔了,基本不会再用,所以写的比较随意。
可以增加ui,查询框,查询结果…
还有关于open的参数,可以按照下面的调整
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2661365.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Openslide安装

文章目录 安装open-slide python下载openslide二进制文件解压到Anaconda的library目录下配置环境变量在py文件中添加以下语句即可 官网链接 安装open-slide python 表面上这样就可以导入了但事实上会遇到 Couldn’t locate OpendSlide DLL的问题,openslide必须独立安…

Python之自然语言处理库snowNLP

一、介绍 SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是&…

SeaTunnel流处理同步MySQL数据至ClickHouse

ClickHouse是一种OLAP类型的列式数据库管理系统,ClickHouse完美的实现了OLAP和列式数据库的优势,因此在大数据量的分析处理应用中ClickHouse表现很优秀。 SeaTunnel是一个分布式、高性能、易扩展、用于海量数据同步和转化的数据集成平台。用户只需要配置…

初见 Amazon Q

前言 如果今年要写一篇年终总结的话,生成式 Ai 一定是绕不过的一个话题,自从去年的 chatGPT 火爆全球后,今年各种生成式 Ai 的产品络绎不绝地出现大众视线,版本迭代的速度也是非常快,大家甚至开始在自己的生活和工作中…

Spire.Office 8.12.2 for .NET

Spire.Office 8.12.2 发布。在此版本中,Spire.Doc支持Word到PCL和PostScript转换中的文本整形以及确定文档是否加密;Spire.Presentation支持将母版页转换为图像;Spire.PDFViewer支持在WinForm项目中使用Ctrl滚轮实现界面缩放效果。此外&#…

电脑系统坏了用U盘重装系统教程

我们平时办公、学习都会用到电脑,如果电脑系统坏了,就会影响自己正常使用电脑,这时候就可以通过U盘来重装一个正常的操作系统。如果您不知道具体的重装操作步骤,那么可以参考下面小编分享的利用U盘快速完成操作系统重装的步骤介绍…

1 - 数据库服务概述 | 构建MySQL服务 | 数据库基本管理 | MySQL基本类型

数据库服务概述 | 构建MySQL服务 | 数据库基本管理 | MySQL基本类型 数据库服务概述构建mysql服务安装mysql软件包连接mysql服务器 修改密码 密码管理修改密码策略(需要登陆)破解数据库管理员root密码(数据库服务处于运行状态但是root忘记了密…

部署一款开源的网站监控工具—Uptime Kuma

项目介绍 项目地址:louislam/uptime-kuma: A fancy self-hosted monitoring tool (github.com) Uptime Kuma是一个开源的网络服务监控工具。它允许用户监视他们的网络服务,以确保其正常运行,并提供有关服务可用性和性能的实时信息。Uptime K…

设计模式-对象池模式

设计模式专栏 模式介绍模式特点应用场景对象池模式和工厂模式的区别代码示例Java实现对象池模式Python实现对象池模式 对象池模式在spring中的应用 模式介绍 对象池模式是一种创建型设计模式,它将对象预先创建并初始化后放入一个池中,以供其他对象使用。…

ERROR: No matching distribution found for torch==2.0.1解决方案

大家好,我是水滴~~ 本文主要介绍在安装 stable-diffusion-webui 时出现的 ERROR: No matching distribution found for torch2.0.1 问题的解决方案,希望能对你有所帮助。 《Python入门核心技术》专栏总目录・点这里 文章目录 问题描述解决方案离线安装 …

工具篇--Spring-Cloud--feign 通过feign 接口完成文件的下载

文章目录 前言一、feign接口获取文件流程:二、文件获取实现2.1 引入jar:2.2 实现: 总结 前言 通常在spring-boot 项目中,对于文件的下载都是直接调用到对应的服务中,而不是通过feign 接口获取文件;有时我们…

算法练习Day23 (Leetcode/Python-回溯算法)

46. Permutations Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order. Example 1: Input: nums [1,2,3] Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路:此题可用回溯…

SpringBoot 项目中常用的注解

每一层对应每个包,包名中应全为小写。 一、Common 层(实体类) 前提:导入 Lombok 依赖 Data:生成 get 和 set 方法以及 toString 方法 Getter:只生成 get 方法,避免对类中的成员变量修改。 …

中国人事考试网公布多项考试成绩:注安、一造在列

12月29日,中国人事考试网公布多项职业资格考试成绩,包括大家心心念念想的注册安全工程师、一级造价工程师考试成绩,公告发布的今天,考生即可登录中国人事考试网查询考试成绩。 较早发布的是注册安全工程师考试成绩(成绩…

鸿蒙开发(二)- 鸿蒙DevEco3.X开发环境搭建

上篇说到,鸿蒙开发目前势头旺盛,头部大厂正在如火如荼地进行着,华为也对外宣称已经跟多个厂商达成合作。目前看来,对于前端或客户端开发人员来说,掌握下鸿蒙开发还是有些必要性的。如果你之前是从事Android开发的&…

信息泄露总结

文章目录 一、备份文件下载1.1 网站源码1.2 bak文件泄露1.3 vim缓存1.4 .DS_Store 二、Git泄露2.1 git知识点2.1 log2.2 stash 三、SVN泄露3.1 SVN简介3.2 SVN的文件3.3 SVN利用 四、Hg泄露 一、备份文件下载 1.1 网站源码 常见的网站源码备份文件后缀: tartar.gz…

2024年医院设备维修培训安排

在你还考虑该不该干的时候别人已经走好远了 小时候觉得忘带作业是天大的事,高中的时候,觉得考不上大学是天大的事,恋爱的时候,觉得跟喜欢的人分开是天大的事,到现在回头看看,那些难以跨过的山,…

ssm基于HTML和JS物资物流系统的设计与实现+vue论文

摘 要 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对物资物流信息管理的提升&#x…

切面编程的理解和使用,Java小白入门(五)

我们进入ruoyi-framework,立刻看到的内容 了解一下aspectj 这个概念 概念 面向切面编程(AOP) 面向切面编程(AOP)是一种编程范式,重点聚焦于软件应用程序中的关注点分离。AOP 背后的思想是软件应用程序具有多个切面&a…

CSDN,你的服务器挂了

浏览器访问一些文章,访问不到:https://blog.csdn.net/qq_40389276/article/details/99709890