neo4j 如何有条件地使用 where

neo4j how to use where conditionally

我有以下查询:

MATCH (u: User {id: '...'})-[r:EXECUTING]->(journey: Journey)
WHERE r.progress > 0 AND r.progress < 100
RETURN journey;

如果关系的 progress 属性 介于 1 和 100 之间,它会加载附加到用户 :EXECUTING 的所有旅程。

现在我想为 AND 后面的部分添加一个条件 --> 所以 WHERE 应该只是 r.progress > 0(没有 AND .. .). 我看到有 CASE/WHEN/THEN 但认为必须有更快的解决方案?

示例“如果某个变量为假,where 应该检查 r.progress 在 0 到 50 之间。如果变量为真,它应该检查 r.progress 在 0 到 100 之间”

提前致谢!

根据您的描述

Example "The where should check r.progress to be between 0 and 50 if a certain variable is false. If the variable is true, it should check r.progress to be between 0 and 100"

我会编写以下 WHERE 子句:

WHERE (
     (variable = FALSE AND (r.progress > 0 AND r.progress < 50 ))
     OR
     (variable = TRUE AND (r.progress > 0 AND r.progress < 100 ))
)

但不确定它是否比 CASE/WHEN 更快。