5

假设我有两个节点 "Body Temperature" 和 "Fever" ,它们之间的关系具有名称 "causes" 和属性为 "degree Celsius" 的值为 "102.0" 。现在我要做的是编写一个密码查询,如果 MATCH 子句中有属性值 > 102.0,那么它必须检索发烧节点,否则不会。

除了创建这样的结构之外,我不知道如何编写这样的查询。

任何帮助,将不胜感激。

4

2 回答 2

7

WHERE在子句中,您可以像过滤节点属性一样过滤关系属性。只需确保将关系绑定到MATCH子句中的标识符即可。我不明白你的模型(温度是因果关系的属性吗?)但你可以尝试类似的东西

MATCH (body_temperature) <-[r:CAUSES]- (fever)
WHERE r.degreeCelsius > 102

那是你要找的吗?

编辑

要使CREATE子句依赖于某些条件,您可以将您的条件声明为仅匹配您想要创建某些内容的情况的模式,然后继续创建。只需确保在您的START,MATCHWHERE子句中绑定要在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
于 2013-10-14T12:13:53.040 回答
2

假设“摄氏度”是关系“原因”的属性,可以使用“where”子句指定属性值约束,如下所示,

Match t:BodyTemperature-[r:CAUSES]->f:Fever
Where r.degreeCelsius > 102.0
Return f
于 2013-10-14T12:12:25.817 回答