MongoDB查询时根据对象中的对象的属性进行判断

2023-05-16

接受同事留下来的项目,没想到运行的时候还有bug,无法对对象的对象的属性进行条件查询,非常操蛋,琢磨了一下午终于解决了。
话不多说,贴代码

@Data
@Document
@ToString
@Accessors(chain = true)
public class ChatMessage {
    @Id
    private String id;
    /**
     * 消息的头部
     */
    private MessageHeader messageHeader;
    /**
     * 消息的主体
     */
    private MessageBody messageBody;
    /**
     * mongodb时区问题无解,故把时间转为字符串类型
     */
    private String createTime;
}
@Data
@ToString
@Accessors(chain = true)
public class MessageHeader {
    @Indexed
    @JsonSerialize(using = ToStringSerializer.class)
    /**
     * 消息从哪里来(发消息者的topic,topic可暂时用用户Id代替)
     */
    private String from;
    @Indexed
    @JsonSerialize(using = ToStringSerializer.class)
    /**
     * 消息到哪里去(接收消息者的topic,topic可暂时用用户Id代替)
     */
    private String to;
}

现在是要对chatMessage中的messageHeader中的to进行条件查询,这里用的是jpa的MongoRepository

方法一:

   //此处是添加所要根据的条件
   ChatMessage message = new ChatMessage();

   message.setMessageHeader(new MessageHeader().setTo("1401061832747122688"));
        //此处是根据指定条件精确查询
   ExampleMatcher matcher = ExampleMatcher
                .matching()
                .withMatcher("messageHeader.to", ExampleMatcher.GenericPropertyMatchers.contains());

   Example<ChatMessage> example = Example.of(message, matcher);
   System.out.println(repository.findAll(example));

方法二:

    @Query("{ 'messageHeader.from' : ?0, 'messageHeader.to' : ?1}")
    List<ChatMessage> findChatMessagesByMessageHeader_ToAndMessageHeader_From(String from, String to);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB查询时根据对象中的对象的属性进行判断 的相关文章

随机推荐

  • RS-422与RS-485传输线上的匹配

    对RS 422与RS 485总线网络一般要使用终接电阻进行匹配 但在短距离与低速率下可以不用考虑终端匹配 那么在什么情况下不用考虑匹配呢 xff1f 理论上 xff0c 在每个接收数据信号的中点进行采样时 xff0c 只要反射信号在开始采样
  • 小明分享:SSD201/202系统烧录篇,多种烧录方式,小明都做了分享,有需要的小伙伴拿走不谢哈!更多资料需求可以关注我,我是启明云端的小明MM!

    一 ISP 烧录 当 flash 没有烧过系统或系统损坏时 xff0c 可以先通过 ISP 烧录 boot xff0c 然后再通过 eth usb 或 sd 烧录完整的系统 下载并解压 tools ssd201 ISP 5 0 15 rar
  • CAN总线详解

    概述 CAN xff08 Controller Area Network xff09 总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线 xff0c 它起初用于实现汽车内ECU之间可靠的通信 xff0c 后因其简单实用可靠等
  • 终端电阻对CAN总线的作用和影响

    在CAN总线测试中 xff0c 会遇到找不出原因的错误 xff0c 那你可能忽略了一个解决异常的利器 终端电阻 究竟终端电阻对CAN总线有什么重要作用和影响呢 xff1f 电信号在电缆中的传播与光相似 xff0c 光从空气射入水中会发生光的
  • CAN总线

    最近在看stm32的通讯部分由于can总线在工业上的应用 xff0c 我选择以can总线为突破口进行学习 实际上在串口通讯所有的协议中 xff0c can总线也是我认为最复杂的一个协议 看了几天 xff0c 为了能够更加通俗的理解can的原
  • 「过孔盖油」、「过孔塞油」

    作为刚接触PCB板的新手 xff0c 是否有遇到过这样的疑问 xff1a 过孔盖油和过孔塞油听起来差不多 xff0c 是不是同一种东西 xff1f 确实两者听起来很像 xff0c 但实际上这是两个完全不一样的的制作要求 过孔盖油的专业解释是
  • 【转】过孔

    在一个高速印刷电路板 PCB 中 xff0c 通孔在降低信号完整性性能方面一直饱受诟病 然而 xff0c 过孔的使用是不可避免的 在标准的电路板上 xff0c 元器件被放置在顶层 xff0c 而差分对的走线在内层 内层的电磁辐射和对与对之间
  • HDC2021技术分论坛:OpenHarmony驱动框架解读和开发实践

    转自 xff1a OpenAtom OpenHarmony 作者 xff1a yuanbo xff0c 华为高级工程师 在IoT时代下 xff0c 终端设备差异较大 形态各异 尺寸各异 交互方式各异 xff0c 解决设备适配问题无疑是实现万
  • UR5+robotiq_85_gripper GAZEBO模拟视觉抓取平台仿真-2

    6 视觉算法 这里我以OpenCv中的SIFT描述子检测目标物体相对于相机的位姿 这里有个开源的包 find object 2d是ROS平台下一个功能强大的识别物体的功能包 由于对于纯颜色物体具有很少的特征 xff0c 所以我决定把另外两个
  • 浅析ros下修改订阅话题

    通过rostopic list 可以查看发布的话题 xff0c 可以看到有 tag detections和 tf话题 xff0c 那麽我们先编写订阅 tag detections xff0c 然后根据此模板订阅成 tf 1 xff0c 首先
  • 软件正在改变世界,程序员应该得到足够尊重

    软件无处不在 xff0c 越来越多的人离不开软件 xff0c 你打开电脑 xff0c 你使用手机 xff0c 你购物娱乐 软件一直在帮你 xff0c 软件已经渗透到我们的工作 生活 娱乐的方方面面 xff0c 软件每一天都在改变着这个世界
  • Ubuntu20.04 通过DD命令克隆自动驾驶开发环境

    第一 准备环境 双硬盘 xff08 Ubuntu20 04系统盘 存储镜像文件盘 xff09 说明 xff1a 本人机器是自动驾驶环境 xff0c 所以系统有些大 xff0c 约180G 第二 命令执行 xff1a 进入命令控制台 xff1
  • Gazebo学习笔记4:模型编辑器

    原文链接 xff1a http gazebosim org tutorials cat 61 guided b amp tut 61 guided b3 文章目录 模型编辑器 Model Editor 用户界面选项板 左面板 Palette
  • error while loading shared libraries的解決方法

    自己编译一些程序 xff0c 而程序难免会引用到别的so文件 xff0c 但是有些so问总是找不到 报 xff1a error while loading shared libraries 类似的错误 Rserve error while
  • Android 使用自定义字体

    Android 使用自定义字体 自定义字体介绍 Android在早期的时候 xff0c 没有使用自定义字体的方案 xff0c 设备只能使用原生字体 xff0c 想要使用自定义字体必须编写大量的代码 最近 xff0c Google为Andro
  • SpringBoot整合MyBatis-Plus实现分页

    使用MyBatis Plus实现分页 配置MyBatis Plus分页插件 span class token annotation punctuation 64 Configuration span span class token key
  • Shiro+JWT实现前后端分离登录验证

    Shiro 43 JWT实现前后端分离登录验证 导入相关的jar包 span class token generics span class token punctuation lt span dependency span class t
  • 过两小时后,自动更新mysql中的字段

    现在的项目中有一个需求 xff0c 就是扫码支付的二维码有效期只有两个小时 xff0c 两个小时后二维码就会失效 xff0c 想要记录这个失效的状态 xff0c 就要用mysql中的定时器来自动更新字段 创建存储过程 span class
  • 微信扫码支付

    微信扫码支付用的是apiv3接口 xff0c 点击查看微信扫码支付官方文档 编写微信支付封装实体类 span class token comment 微信平台证书VO 64 author shenlu 64 date 2020 12 21
  • MongoDB查询时根据对象中的对象的属性进行判断

    接受同事留下来的项目 xff0c 没想到运行的时候还有bug xff0c 无法对对象的对象的属性进行条件查询 xff0c 非常操蛋 xff0c 琢磨了一下午终于解决了 话不多说 xff0c 贴代码 span class token anno