关于Neo4j属性的关系

paw*_*977 5 neo4j graph-databases cypher

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

我不知道如何编写这样的查询,然后创建这样的结构.

任何帮助,将不胜感激.

jja*_*erg 6

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

MATCH (body_temperature) <-[r:CAUSES]- (fever)
WHERE r.degreeCelsius > 102
Run Code Online (Sandbox Code Playgroud)

那是你在找什么?

编辑

要使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
Run Code Online (Sandbox Code Playgroud)