如何按特定的日期和时间范围查询文档?就是我想按特定日期范围(01-01-2019-31-01-2019)查询文档,并且从这些日期开始仅查询上午10点至下午12点的文档。
它会变成这样:
let ref = db.collection('events')
// Query by date range
ref = ref
.where('created', '>=', new Date(2019, 1, 1, 10, 0, 0, 0))
.where('created', '<=', new Date(2019, 1, 1, 12, 0, 0, 0))
// Query by time range in each date
ref = ref
.where('created', '>=', *START TIME = 10pm*)
.where('created', '<=', *END TIME = 12pm*)
所以问题是我每天如何过滤查询的小时和分钟?希望你明白我在这里问的!如有需要,我将更新问题。
更新 数据库结构正在关注
/ events / {单个事件文档}:
{
cafeId: String,
created: Firestore timestamp // ex. February 2, 2019 at 10:16:00 AM UTC+2
discount: Number,
eventId: Number,
productCount: Number,
keywords: Array,
products: Map,
payment: Map,
returned: Number,
total: Number
}
当我在客户端创建此文件时,它将转换为:
{ _seconds: Number, _nanoseconds: 0 }
答案 0 :(得分:2)
如果要使用“标准” where()
方法,则可能必须从
ref = ref
.where('created', '>=', new Date(2019, 1, 1, 10, 0, 0, 0))
.where('created', '<=', new Date(2019, 3, 1, 12, 0, 0, 0))
另一种方法是在一个额外的字段(例如createdText
)中以自定义格式(例如YYYYMMDDHHMM
)以24小时格式存储您的日期/时间值(即HH)。
这样,文档将被正确排序,并且您只能使用一个where
进行查询,如下所示:
ref = ref
.where('createdText', '>=', '201902031000')
.where('createdText', '<=', '201902041200')
在NoSQL数据库中复制数据非常普遍,尤其是允许根据您的业务需求进行查询。