首页 > 解决方案 > Firestore 按生日日期查询文档,例如仅按日和月查询不包括年份?

问题描述

我有 users 集合,其中每个用户都包含其birthday归档为Timestamp,所以现在我想查询生日是今天的用户,那么我如何才能只查询dayandmonth因为在这种情况下year无关紧要。
在此处输入图像描述

所以我知道我们只能像这样按日期搜索 firestore.collection("user").whereEqualTo("birhtday", todaysDate),但我们知道它不会返回任何东西,因为它也会匹配year

那么这里最好的解决方案是什么?

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


由于将Date对象作为第二个参数传递给以下查询:

firestore.collection("user").whereEqualTo("birhtday", todaysDate);

返回今天生日的所有用户,需要添加新属性。在这个新属性中,您可以简单地将日期存储为字符串格式的日期和月份:

shortBirhtday: "09-Jun"

然后使用以下命令查询数据库:

firestore.collection("user").whereEqualTo("shortBirhtday", "09-Jun");

此查询将返回所有在 6 月 9 日生日的用户,无论年份。

编辑:

根据@DougStevenson 的评论,存储日期的更合适的方式应该是:

09-06

where09代表日,06代表月。这是相应的查询:

firestore.collection("user").whereEqualTo("shortBirhtday", "09-06");

推荐阅读