假设我有两个节点“体温”和“发烧”,它们之间的关系名称为“cause”,属性为“degree Celsius”的值为“102.0”。现在我要做的是编写一个密码查询,其中如果有属性值> 102.0在MATCH子句中,它必须检索发烧节点否则不会。
我不知道除了创建这样的结构之外如何编写这样的查询。
任何帮助都将不胜感激。
答案 0 :(得分:6)
您可以在WHERE
子句中过滤关系属性,就像节点属性一样。只需确保将关系绑定到MATCH
子句中的标识符即可。我不明白你的模型(温度是因果关系的属性吗?)但你可以尝试像
MATCH (body_temperature) <-[r:CAUSES]- (fever)
WHERE r.degreeCelsius > 102
这就是你要找的东西吗?
修改强>
要使CREATE
子句依赖于某些条件,您可以将条件声明为仅匹配您想要创建某些内容的情况的模式,然后继续创建。只需确保在START
,MATCH
和WHERE
子句中绑定要在CREATE
子句中使用的不同节点或关系。有时您可能必须使用WITH
将结果带到查询的新部分,但对于您的情况,请先尝试类似
START bodyTemp = node:MyIndex(name="Body Temperature"), fever = node:MyIndex(name="Fever")
WHERE HAS(bodyTemp.degreeCelsius) AND bodyTemp.degreeCelsius > 102.0
CREATE bodyTemp -[:CAUSES]-> FEVER
答案 1 :(得分:2)
假设“摄氏度”是关系“CAUSES”的属性,可以使用“where”子句指定属性值约束,如下所示,
Match t:BodyTemperature-[r:CAUSES]->f:Fever
Where r.degreeCelsius > 102.0
Return f