当前位置: 首页 > 知识库问答 >
问题:

Firestore查询日期范围

傅高逸
2023-03-14

我的文档中有一个日期范围(使用日期对象)如下所示

{
  start: March 5
  end: April 7
}

我试图弄清楚如何构建一个查询来返回包含特定日期的所有事件,例如marky 27,像....

如果查询显示类似获取起始日期在3月27日之前、结束日期在3月27日之后的所有文档这样的内容,但在Firestore查询限制下可能不可能出现这种情况。

因此,我一直在挠头几个小时,要么为此构建一个查询,要么以某种方式结构我的数据,以允许这样做。

这有可能吗?

共有1个答案

金高轩
2023-03-14

只需简单地使用小于或大于该查询。例如,在我的android For snapshot listener(监听更新)应用程序中,我做了如下操作:

    ListenerRegistration registration;
    String lessDate = "09/04/2019 23:59:59";
    String greaterDate = "11/04/2019 23:59:59";
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss", Locale.getDefault());
    try {
        Date lDate = dateFormat.parse(lessDate);
        Date gDate = dateFormat.parse(greaterDate);
        Query q = db.collection("collection").whereGreaterThan("createdAt", new Timestamp(lDate))
                .whereLessThan("createdAt", new Timestamp(gDate));
        registration = q.addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@Nullable QuerySnapshot value,
                                @Nullable FirebaseFirestoreException e) {
                if (e != null) {
                    Log.i("FIRESTORE ERROR", "Listen failed.", e);
                    return;
                }
                for (DocumentChange doc : value.getDocumentChanges()) {
                    // What ever you want to do.
                }
            }
        });
    } catch (ParseException e) {
        e.printStackTrace();
    }

对于日期,您实际上可以从系统获取日期,或者从用户获取输入,并根据您的需要对其进行自定义。如果你需要帮助就告诉我。

 类似资料:
  • 我需要帮助查询与日期范围的长收集。请参阅下面的示例文档。我想用日期范围查询startTime字段。

  • 这是当我尝试使用'where'而不是'where field'时收到的错误,尽管从文档中看,'where'似乎是查询Firestore数据库的有效命令。是不是我需要下载其他的豆荚?我有的是:pod'firebase/analytics'pod'firebase/auth'pod'firebase/core'pod'firebase/firestore'

  • > 每个对象表示一个重复发生的事件。该事件可以在多个日期发生。因此,请考虑以下内容: 我有一个日历在客户端,用户可以选择一个日期范围。 > 对所选日期范围的每个条目进行调用,并在客户端处理聚合。问题是会有大量的读取,因为我们会多次读取重叠的日期范围内的同一个列表对象。 尝试使用类似ElasticSearch/Algolia的服务来完成此操作 任何建议都会很有帮助!

  • 我有一个大约为100GB的cosmos数据库。我成功地创建了一个漂亮的分区键,我在70M记录上有大约4600个分区,但是我仍然需要查询两个存储为字符串的日期时间字段,而不是纪元格式。 示例json: 我注意到当我做中选择*以及当我做

  • 问题内容: 我有带日期对象的文档。 初始化Firestore的代码: 查询代码: 我总是在获取所有记录,并且看起来where子句没有得到应用。在Firebase控制台上,我看到的存储为时间戳。 Firebase控制台中的文档: 问题答案: Cloud Firestore查询是不可变的,这意味着您无法更改现有查询的属性。如果通过调用方法更改值,它将成为一个新查询。因此,要解决此问题,请链接所有方法调

  • 问题内容: 我在MySQL中有一张表,该表显示了我每天记录的小时数。我正在尝试建立一个视图,该视图将允许我按块/天范围快速将数据分组。最简单的情况是每月一次,这并不难。我可以将日期选择为“%y-%m”,然后按该列分组。 前任: 如果我按月分组,那很好。但是我的问题是,我需要从每月的13号到下个月的12号进行分组(例如:7月13日至8月12日,8月13日至9月12日,等等)。 有没有一种简单的方法可