Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firestore获取过去48小时的随机文档_Android_Firebase_Google Cloud Firestore - Fatal编程技术网

Android Firestore获取过去48小时的随机文档

Android Firestore获取过去48小时的随机文档,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,在我的情况下,我需要阅读过去48小时的随机帖子。我见过这样一种方法,我们需要创建一个随机id,并使用比OreQualto更大的范围进行查询,以获得随机帖子。但我也需要用它来做时间戳。据我所知,Firestore不允许在一个查询中对不同字段进行范围查询。我怎样才能得到过去48小时的随机帖子 --- posts (collection) | | | --- pos

在我的情况下,我需要阅读过去48小时的随机帖子。我见过这样一种方法,我们需要创建一个随机id,并使用
比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,并使用大于或等于范围的查询来获取随机帖子”,这是什么意思?我是说: