概述
接受同事留下来的项目,没想到运行的时候还有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);
最后
以上就是英勇水蜜桃为你收集整理的MongoDB查询时根据对象中的对象的属性进行判断的全部内容,希望文章能够帮你解决MongoDB查询时根据对象中的对象的属性进行判断所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复