有没有办法查询userId匹配且文档当天开始或结束的文档?我知道 firestore 支持“OR”运算符,但我不确定是否正确实现了隐式“and”运算符
我正在努力实现这样的目标
let q = query(
sessionsRef,
(
orderBy("createdAt"),
where("user", "==", userId),
or
(
(
where("endedAt", ">=", Timestamp.fromDate(startOfDay)),
where("endedAt", "<=", Timestamp.fromDate(endOfDay))
),
(
where("startedAt", ">=", Timestamp.fromDate(startOfDay)),
where("startedAt", "<=", Timestamp.fromDate(endOfDay))
)
)
)
);
我不喜欢使用两个查询并合并结果,除非没有其他选择。使用两个查询的唯一问题是我会得到很多重复的数据
如果您想在
and
条件内使用 or
条件,请在内部条件周围使用 and
函数。
or(
and(
where("endedAt", ">=", Timestamp.fromDate(startOfDay)),
where("endedAt", "<=", Timestamp.fromDate(endOfDay))
),
and(
where("startedAt", ">=", Timestamp.fromDate(startOfDay)),
where("startedAt", "<=", Timestamp.fromDate(endOfDay))
)
)