[英]how to query a Firestore DocumentReference field in Flutter
[英]How to exclude a datetime range in firestore query in flutter?
我正在尝试查询 2022-01-01 到 2022-01-18 之间的数据以及 2022-01-26 之后的数据。 从 2022-01-18 到 2022-01-26 的数据将被排除在外。
但是,当我运行下面的查询时,没有返回任何数据。
DateTime dateTime2 = 2022-01-01 21:53:50.793
DateTime dateTime2 = 2022-01-26 21:53:50.793
DateTime dateTime3 = 2022-01-18 21:53:50.793
firestore.collection('posts')
.limit(9)
.where('timeStamp', isGreaterThan: dateTime1)
.where('timeStamp', isGreaterThan: dateTime2)
.where('timeStamp', isLessThan: dateTime3)
.orderBy('timeStamp', descending: true)
.get()
如果我要拿出来
.where('timeStamp', isGreaterThan: dateTime1)
.where('timeStamp', isGreaterThan: dateTime2)
查询工作得很好。 谁能告诉我的查询有什么问题,或者我怎样才能得到排除两个日期之间数据的数据? 谢谢你。
您不能查询具有两个不同值范围的 Firestore 集合,例如(伪代码)
timeStamp between 2022-01-01 and 2022-01-18 OR timeStamp between 2022-01-26 and now
这是 Firestore 索引数据的方式的结果。 您会在这个官方视频中找到一些非常清晰的解释。
所以你需要执行两个查询并在你的前端合并它们的结果。
或者,如果两个日期范围之间的差距不是很大,您可以查询timeStamp between 2022-01-21 and now
的时间戳,并在前端删除中间不需要的日期。 这显然是一种可能没有意义的解决方法,因为您使用.limit(9)
限制了查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.