广告
返回顶部
首页 > 资讯 > 精选 >怎么在java中使用mongodb实现多表联查
  • 325
分享到

怎么在java中使用mongodb实现多表联查

2023-06-14 09:06:30 325人浏览 泡泡鱼
摘要

这期内容当中小编将会给大家带来有关怎么在java中使用mongodb实现多表联查,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。多表联查的查询语句:此处使用的为mongoDB的robo3t可视化工具,先说下

这期内容当中小编将会给大家带来有关怎么在java中使用mongodb实现多表联查,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

多表联查的查询语句:

此处使用的为mongoDB的robo3t可视化工具,先说下需求:从A(假如说是日志表)表中查询出符合条件的数据,根据A表中符合条件数据查询B(假如说是信息表)表中的数据,此处也可以将B表的查询条件加入进来(类型于关系型数据库中的临时表)

monGo查询语句:

db.getCollection('A').aggregate([    {    $lookup:{          from:'B',          localField:'userid',          foreignField:'userid',          as:'userinfo'        }    },     {     $unwind:'$userrole'//把一个数组展成多个,就比如说按多表连查的userrole数组中有10数据,那么用$unwind将把一条带数组的数据分成10条,这10条数据除了userrole不同之外,其它数据都是相同的,就类似于一个展开操作    },    {     $match:{'username':'zhangsan'}    },    {     $group:{          _id:{              userid:'$userid',//这个属性必须是要A表中有的              userrole:'$userrole.roleid',//A表中有一个集合,里面存放的对象有一个名为roleid的属性            },          operateTime:{              $last:'$operateTime'//取A表操作时间最后一条件数            }          info:{              $first:'$userinfo'//因为数组的扩展,造成了大量的重复数据(只有userrole不同),$first是只取最新的一条            }        }    },    {      $sort:{'operateTime':-1}//操作时间倒序,-1:倒序,1:升序    },    {      $skip:0//跳过几条数据,也就是从第几条数据开始取    },    {      $limit:5//每页显示几条数据    }]);

java代码整合查询语句

//定义分组字段String[] groupIds = new String[] {"$userid","$userrole.roleid"};//定义查询条件Criteria criteria = new Criteria();//相当于where username = "zhangsan"criteria.and("username").is("zhangsan");//相当于 where age not in("15","20")criteria.and("age").nin("15","20");//in操作对应的语句//criteria.and("").in();//定义排序条件Sort sort = new Sort(Direction.DESC,"operateTime");//联合查询总条数,分页用Aggregation aggregationCount = Aggregation.newAggregation(  Aggregation.match(criteria);//查询条件  Aggregation.group(groupIds);//分组字段);//联合查询条件Aggregation newAggregation = Aggregation.newAggregation(  Aggregation.lookup('B','userid','userid','userinfo'),//从表名,主表联接字段,从表联接字段,别名  Aggregation.unwind("$userrole"),  Aggregation.match(criteria),  Aggregation.group(groupIds)    .last("$operateTime").as("operateTime")//取值,起别名    .first("$userinfo").as("info"),  Aggregation.sort(sort),  Aggregation.skip(pageSize*(pageNumber-1L)),//Long类型的参数  Aggregation.limit(pageSize));//查询AggregationResults<BasicDBObject> aggregate = mongoTemplate.aggregate(  newAggregation ,"A",BasicDBObject.class//A表,是查询的主表);int count = mongoTemplate.aggregate(aggregationCount ,"A",BasicDBObject.class).getMappedResults().size();//组装分页对象Page<BasicDBObject> pager = new Page<>(aggregate.getMappedResults(),count,pageSize,pageNumber,page*(pageNumber-1));//对象转换将BasicDBObject转换成前面需要的类型.....

上述就是小编为大家分享的怎么在java中使用mongodb实现多表联查了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么在java中使用mongodb实现多表联查

本文链接: https://www.lsjlt.com/news/269606.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在java中使用mongodb实现多表联查
    这期内容当中小编将会给大家带来有关怎么在java中使用mongodb实现多表联查,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。多表联查的查询语句:此处使用的为mongodb的robo3t可视化工具,先说下...
    99+
    2023-06-14
  • MongoDB中如何实现多表联查
    今天小编给大家分享一下MongoDB中如何实现多表联查的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前些天遇到一个需求,不复...
    99+
    2023-07-02
  • java操作mongodb之多表联查的实现($lookup)
    最近在开发的过程中,一个列表的查询,涉及到了多表的关联查询,由于持久层使用的是mongodb,对这个非关系型数据使用的不是很多,所以在实现此功能的过程中出现了不少问题,现在此做记录,...
    99+
    2022-11-12
  • MongoDB中实现多表联查的实例教程
    前些天遇到一个需求,不复杂,用 SQL 表现的话,大约如此: SELECT * FROM db1 LEFT JOIN DB2 ON db1.a = db2.b WHERE db1.userId='$me'...
    99+
    2022-09-07
  • MyBatis-Plus怎么实现多表联查
    这篇文章主要介绍“MyBatis-Plus怎么实现多表联查”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MyBatis-Plus怎么实现多表联查”文章能帮助大家解决问题。建库建表DROP&n...
    99+
    2023-06-29
  • Hibernate多表关联查询怎么实现
    本篇内容介绍了“Hibernate多表关联查询怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Hibernate简介Hiberna...
    99+
    2023-06-17
  • mongodb中怎么实现连表查询
    今天就跟大家聊聊有关mongodb中怎么实现连表查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.mongodb正则匹配 name: ...
    99+
    2022-10-18
  • 怎么在mysql中实现多表关联统计
    本篇文章为大家展示了怎么在mysql中实现多表关联统计,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。需求:统计每本书打赏金额,不同时间的充值数据统计,消费统计,设计...
    99+
    2022-10-18
  • 怎么在MongoDB中实现多条件模糊查询
    怎么在MongoDB中实现多条件模糊查询?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。模糊查询是数据库的基本操作之一,实现对给定的字符串是否与...
    99+
    2022-10-18
  • 利用SpringBoot怎么实现一个多表联查功能
    这篇文章给大家介绍利用SpringBoot怎么实现一个多表联查功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体方法如下:public interface FieldValueDao extends JpaRepo...
    99+
    2023-05-31
    springboot bo
  • 怎么在mybatis中实现多对一关联查询
    怎么在mybatis中实现多对一关联查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。第一种关联方式1.修改实体类Student,追加关联属性,用于封装关联的数据修改完以后...
    99+
    2023-06-15
  • 怎么在Mysql中利用update实现多表联合更新
    今天就跟大家聊聊有关怎么在Mysql中利用update实现多表联合更新,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 执行 UPDATE stu...
    99+
    2022-10-18
  • MySQL中的多表联合查询功能怎么使用
    本篇内容介绍了“MySQL中的多表联合查询功能怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.介绍多表查询就是同时查询两个或两个以...
    99+
    2023-07-05
  • 怎么使用AOP+反射实现自定义Mybatis多表关联查询
    这篇“怎么使用AOP+反射实现自定义Mybatis多表关联查询”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用AOP+...
    99+
    2023-06-30
  • mongoDB数据库中的多条件查询怎么利用Java实现
    mongoDB数据库中的多条件查询怎么利用Java实现?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。客户端代码:db.url.find({index:4,status:0,ur...
    99+
    2023-05-31
    java mongodb ava
  • sqlite中怎么实现联合多表更新
    本篇文章为大家展示了sqlite中怎么实现联合多表更新,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。update table1 set...
    99+
    2022-10-18
  • linq中怎么实现多表查询
    这篇文章给大家介绍linq中怎么实现多表查询,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1:1关系的多表操作表结构如上首先是测试取全记录的情况(也就是取所有字段)linq多表查询之直接写表达式var use...
    99+
    2023-06-17
  • SQL update中怎么实现多表关联更新
    这篇文章给大家介绍SQL update中怎么实现多表关联更新,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。有A、B张表,其记录如下:A表c1 c2--------------...
    99+
    2022-10-18
  • SQL 中怎么利用Update实现多表联合更新
    这篇文章将为大家详细讲解有关SQL 中怎么利用Update实现多表联合更新,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。(1) sqlite 多表...
    99+
    2022-10-18
  • 使用AOP+反射实现自定义Mybatis多表关联查询
    目录一、需求二、核心代码MapToDoMapIDualMapperDualMapperDoMapAspect三、使用方法SysUserSysRoleSysPermissionSysU...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作