前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记录一次让我懵逼的沟通

记录一次让我懵逼的沟通

作者头像
青衫染红尘
发布2021-04-09 16:33:23
3130
发布2021-04-09 16:33:23
举报
文章被收录于专栏:Surpass' Blog

背景

日常工作任务和其他部门进行对接联调,他们提供数据供我这里查询,使用的数据库是MongoDB(同步Mysql)

问题

我的查询条件里面有手机号,但是MongoDB里面保存的手机号是脱敏字符串,类似于:132****0482,那么肯定是查不到的,通过沟通发现表中有对应的加密手机号(了解到之前设计不合理,在数据库中直接保存脱敏的数据,后面才加的加密字段),目前会出现两种情况:

  • 当加密串(PHONE_EN)为空的时候,脱敏串(PHONE)保存的是明文(正常手机号)
  • 当加密串(PHONE_EN)不为空的时候,脱敏串(PHONE)则保存的脱敏手机号

那么我一个手机号要查询两个字段还要分情况,当时我就是蒙蔽的,怎么想啊,MongoDB中有逻辑控制规范吗?啊,`(_)`。

脑子直接被这个问题限制了想了半天求助同事大哥,说明了遇到的问题,他的回答:为什么非要逻辑控制呢,我只要注重目的就行,我就只需要字段PHONE的明文和加密串PHONE_EN就行了呗,可以用 or 来查询噻,查询:加密串 or 明文,当我加密串为空时,肯定去看脱敏串是不是明文匹配了。

我恍然大悟,对啊,然后自己写了写查询语句,确实能实现查询,语句如下:

代码语言:javascript
复制
db.getCollection('risk_case_data').find({
    $or:[
    {"merchant.PHONE": "1860001"},{"merchant.PHONE_EN": "AGJAS;LKSJGA"}
    ]
})

这里自己就受到了之前思路的影响,思维固化,没有变通,一直在想如何构造条件,还是遇到的问题太少,思路打不开,简单问题复杂化,还是要多看,多思考,多动手。

今天就到这里,纪念独自懵逼的我!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 问题
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档