Android Firestore获取过去48小时的随机文档
在我的情况下,我需要阅读过去48小时的随机帖子。我见过这样一种方法,我们需要创建一个随机id,并使用Android Firestore获取过去48小时的随机文档,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,在我的情况下,我需要阅读过去48小时的随机帖子。我见过这样一种方法,我们需要创建一个随机id,并使用比OreQualto更大的范围进行查询,以获得随机帖子。但我也需要用它来做时间戳。据我所知,Firestore不允许在一个查询中对不同字段进行范围查询。我怎样才能得到过去48小时的随机帖子 --- posts (collection) | | | --- pos
比OreQualto更大的范围进行查询,以获得随机帖子。但我也需要用它来做时间戳。据我所知,Firestore不允许在一个查询中对不同字段进行范围查询。我怎样才能得到过去48小时的随机帖子
--- posts (collection)
| |
| --- postid (documents)
| |
| --- country_code: "TR"
| |
| --- timestamp: "Server.Timestamp"
| |
| --- post_text: "Some Text"
我看到两种解决办法:
假设帖子在48小时内均匀分布,使用时间戳作为随机索引,如您在回答中所述
对时间戳进行编码时,不需要在过去48小时内使用范围进行过滤。例如,您可以添加一个字段timechunk
,该字段将时间分割为5小时的块,每个块递增1,然后只需将最后10个块添加到查询中
let postsRef = db.collection("posts")
queryRef = postsRef.whereField("random", isGreaterThanOrEqualTo: lowValue)
.whereField("timechunk", in: ["chunk1", "chunk2", "chunk3", "chunk4", "chunk5", "chunk6", "chunk7", "chunk8", "chunk9", "chunk10"])
.order(by: "random")
.limit(to: 1)
这样你就可以在过去的50个小时里得到一篇随机的帖子。我正在使用此解决方案解决一个类似的问题。您能清楚地定义“过去48小时的随机帖子”吗?您尝试过什么?应用程序存储一个带有自动Id的帖子。每个帖子文档都有一个时间戳、国家/地区代码字段。我只是想在48小时内随机获取一个国家的帖子,并展示给用户。我将用我帖子的数据结构编辑这个问题。事实上,我还没有尝试过任何东西,因为我清楚地看到Firestore的限制是不可能的。你说“我已经看到了一种方法,我们需要创建一个随机id,并使用大于或等于范围的查询来获取随机帖子”,这是什么意思?我是说: