我使用NEO4j 3.0并且作为属性我有一个词典。以下是关系属性的示例:
R1 :2016-09:{'x': 296, 'y': 8}
R2 : 2016-08:{'x': 481, 'y': 13}
R3 : 2016-08:{'x': 300, 'y': 13}
我正在寻找关键字' x'满足特定日期的某些条件。所以,我按照旧帖中的建议尝试了这个:
MATCH (A:Airport {code:'AAA'}),
(B:Airport {code:'BBB'}),
(A)-[r:`2016-08`]-(B)
WHERE r.x>'300'
RETURN r
它只给我R2,但我一无所获。
因此,当属性键是字典时,我正在寻找语法来检索key的值。
谢谢
答案 0 :(得分:2)
如果你的关系是像
那样创建的MATCH (a:Airport {code: "AAA"}), (b:Airport {code: "BBB"})
CREATE (a)-[:`2016-08` {x: 296, y: 8}]->(b)
它有2个属性(x
和y
),您可以在WHERE
子句中查询和使用,返回,等等。
但是,如果你创建一个具有类似JSON结构的复杂结构的单个属性,就像这样的字符串
MATCH (a:Airport {code: "AAA"}), (b:Airport {code: "BBB"})
CREATE (a)-[:`2016-08` {prop: "{x: 296, y: 8}"}]->(b)
您无法查询prop
属性的内容:它是一个字符串,对Cypher引擎不透明。您只能获得字符串操作,例如STARTS WITH
,ENDS WITH
,CONTAINS
等。
TL; DR 如果您需要查询某些内容,则需要将其自身作为属性。