繁体   English   中英

如何在 flutter 的 firestore 查询中排除日期时间范围?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM