登录
首页 >  Golang >  Go问答

搜索小于 X 的值的查询不返回任何内容

来源:stackoverflow

时间:2024-03-17 08:18:27 267浏览 收藏

当查询特定过期时间的数据库记录时,如果查询不返回任何结果,可能是由于文档中的过期时间字段数据类型不一致。例如,如果查询条件中的过期时间是整数,而数据库中的过期时间字段存储为字符串,则查询将无法返回任何结果。

问题内容

我有一个集合,我在其中保存 accesstoken 及其过期时间。 我想自动加载所有在接下来的 x 天内到期的内容。

我已经确认数据库和集合确实包含一个条目,它应该返回。我通过简单地设置一个空查询来返回集合中的所有内容来完成此操作。

// highestexptime is the timestamp of the latest day that i want to select
query := bson.m{"expiration": bson.m{"$lte": highestexptime}}

// dbo is just an instance of a *mongo.database struct
ctx, _ := context.withtimeout(context.background(), 30 * time.second)
cur, err := dbo.collection(dblogin.dbcollection).find(ctx, query)

文档如下所示:

{
  userID // string
  accessToken // string
  refreshToken // string
  expiration // int
}

我希望它返回 expiration 低于 highestexptime 的每个条目,因此从这个意义上来说是“较旧的”。

但是当我实际执行它时,它只是返回一个空响应并且没有错误。


解决方案


其实我自己也发现了这个问题。 事实证明,我的其他 NodeJS 进程仅添加了带有字符串的文档,这就是 $lte 没有返回任何内容的原因。

我只需确保与此相关的所有内容都作为整数/浮点添加。

本篇关于《搜索小于 X 的值的查询不返回任何内容》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>