我的文档(使用日期对象)的日期范围是这样的
{
start: March 5
end: April 7
}
我试图弄清楚如何构建一个查询来返回所有覆盖特定日期的事件,例如March 27
,就像....
一个类似于get all documents whose starting date is before march 27th, and the ending date is after march 27th
的查询但看起来像Firestore查询限制可能无法实现。
因此,我一直在摸不着头脑,为此构建一个查询,或以某种方式构建我的数据,这将允许这样做。
这甚至可能吗?
只需使用小于或大于该查询。例如在我的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();
}
对于日期,您实际上可以从系统获取日期或从用户处获取输入并根据您的需要进行自定义。如果您需要任何帮助,请告诉我。