gpt4 book ai didi

mongodb - Spring Boot数据如何正确管理NumberLong进行Query?

转载 作者:行者123 更新时间:2023-12-03 15:59:44 25 4
gpt4 key购买 nike

我在 MongoDb 中存储带有 Int64 字段的元素。我正在使用所有大字段和真实 64 位值生成一个值。

文档看起来像{ 锉... messageUid : -3130564683773456202}

用 springboot-data 写入这个长值没有问题。

现在我想搜索这个值,而 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编写第三个版本的查询

我尝试过不同的事情

@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 进行有效搜索吗?

最佳答案

试试这个

@Query("{ 'messageUid' : NumberLong(?0) }")
public Message findMessageByMessageUid( Long messageUid );

关于mongodb - Spring Boot数据如何正确管理NumberLong进行Query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49099665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com