首页 > 数据库技术 > 详细

MongoDB根据多个条件获取多条信息

时间:2021-05-07 00:52:12      阅读:19      评论:0      收藏:0      [点我收藏+]

背景

在工作时,有许多大字段是存储在MongoDB中的,在列表展示的时候,分页在mysql中查询出主要信息,再根据mysql中的字段获取MongoDB中的信息,而之前的做法是通过循环调用MongoDB,这中应该是最不应该使用的一种方法,频繁的打开关闭数据库连接,性能可见一般。

使用场景极其类库

表设计

字段 解释
userId 用户唯一标识
productId 产品唯一标识
productinfo 产品详情信息
authId 产品所在店铺的唯一标识
其他信息

 

框架支持

Spring Boot ---------为了建立项目方便
Spring Data MongoDB--------MongoTemplate
实体类与MongoDB的字段相互对应(使用方法参见 Spring官方网站)

框架支持

JDK 1.8
Maven(版本随意)

设计思路

简单实现

由于有多个条件的制约,自然形成的思路就是通过OR来同时查询多条数据集合
(userId=“xwb” and productId=“xwbProduct” and authId=“1”) OR (userId=“xwb1” and productId=“xwbProduct1” and authId=“2”)

代码示例如下:

技术分享图片

如上完整的解决了任务,但是对于每一个表,或者如果在增加一个检索条件,那么就要重新声明一个这样的方法,对于JAVA这种的高级编程语言,就不是很合适,完全可以抽离出一个共同方法使用。

抽离出来的公用方法

  1. 对于上面的代码,不难发现返回值与入参的形式相同,所以JAVA中的泛型便可以解决这个指定查询某个表的问题。
  2. 要根据哪一些字段进行查询,如果想实现动态性,可以通过一个集合传入要使用的检索字段,再通过反射取到入参中的数据进行查询。

公共方法如下(通过字段,反射获取值的小方法美欧截出来,只截取了主要的思路部分):

技术分享图片

模拟通过userId,productId,authId查询productinfo,代码如下:

技术分享图片

 

总结

在我们习惯了去完成任务,实现增删改查的同时,也可以多使用JDK的一些特性,去抽离出好一些的方法供大家使用,节约了代码量,巩固了JAVA的相关特性,更加锻炼了我们的思路。

番外

上面的示例代码,下载链接如下(不需要会员,不需要C币):点击下载

MongoDB根据多个条件获取多条信息

原文:https://www.cnblogs.com/xwbBlog-2021/p/14736476.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!