我在MongoDb中存储带有Int64字段的元素。我正在使用所有大字段和实际64位值生成一个值。
文档看起来像 { 的Fileds ... messageUid:-3130564683773456202 }
使用springboot-data写这个long值没问题。
现在我想对这个值进行搜索,SpringBoot-data什么都不返回......
findMessagesByMessageUid(long _messageUid) returns nothing.
findMessagesByMessageUid(Long _messageUid) returns nothing.
我直接尝试使用mongoShell 1 - 找到({messageUid:-3130564683773456202}) 这不起作用,因为shell将数字转换为double,最后该值与
不完全匹配2 - find({messageUid:NumberLong(-3130564683773456202)}) 这不起作用,因为值太大(有限制,我在某处读到)
3 - find({messageUid:NumberLong(“ - 3130564683773456202”)}) 这工作正常
所以我想知道如何使用SpringBoot-data
编写查询的第3版我尝试了不同的事情
@Query("{messageUid:NumberLong(?0)}")
public Message findMessageByMessageUid( long messageUid );
=>启动时JSON解析异常
@Query("{messageUid:NumberLong(?0)}")
public Message findMessageByMessageUid( String messageUid );
=>启动时JSON解析异常
基本上我们不能在@Query字符串中使用NumberLong。
我也试过
public Message findMessageByMessageUid( String messageUid );
=>不返回匹配的文档
有人能告诉我如何使用Spring-data在NumberLong上进行搜索?
答案 0 :(得分:0)
试试这个
@Query("{ 'messageUid' : NumberLong(?0) }")
public Message findMessageByMessageUid( Long messageUid );