我正在尝试使用Firestore将集合中的所有文档放入列表中,我希望仅在特定年份上传的文档。
所有文档中都有一个名为“ dateAdded”的字段,用于存储格式为“ dd-MM-yyyy”的日期。
为了测试,我只有3个文档,其中2020年上传了2个文档,2019年上传了1个文档
QuerySnapshot querySnapshot= await Firestore.instance
.collection('Deceased')
.where("dateAdded",
isGreaterThanOrEqualTo:"01-01-"+year )
.where("dateAdded",isLessThanOrEqualTo:"31-12-"+year )
.getDocuments();
我尝试过这种方式,只有第一个条件有效。有什么建议吗?
答案 0 :(得分:2)
您可以使用一种叫做startAt
或startAfter
以及endAt
或endBefore
的东西,要使用这些东西,必须先对要查询的字段进行排序因此,我在这里使用startAt
和endAt
,它们应该为您提供想要的结果,我认为这是整年的记录
QuerySnapshot querySnapshot= await Firestore.instance
.collection('Deceased')
.orderBy('dateAdded')
.startAt([DateTime(year,1,1,0,0,0)])
.endAt([DateTime(year,12,31,23,59,59])(
.getDocuments();
答案 1 :(得分:0)
似乎您将数据存储为字符串。我建议像这样在几秒钟内存储数据
final dateNow = DateTime.now();
final int seconds = (dateNow.millisecondsSinceEpoch ~/ 1000);
一旦您将数据存储在Firebase中,就非常容易处理
QuerySnapshot querySnapshot= await Firestore.instance
.collection('Deceased')
.where("dateAdded",
isGreaterThanOrEqualTo:xxxxxxx)
.where("dateAdded",isLessThanOrEqualTo:yyyyyy )
.getDocuments();
xxxxxxx和yyyyyy必须为整数。看看https://www.epochconverter.com,了解纪元时间是如何工作的
例如,如果要捕获2019年的所有记录,则应首先确定2019年1月1日的纪元时间,然后确定2019年12月31日的纪元时间。如果使用该网站,您将获得以下
QuerySnapshot querySnapshot= await Firestore.instance
.collection('Deceased')
.where("dateAdded",
isGreaterThanOrEqualTo: 1546300800)
.where("dateAdded",isLessThanOrEqualTo: 1577836799 )
.getDocuments();