【发布时间】:2017-07-03 17:03:32
【问题描述】:
使用 cypher,有什么方法可以匹配关系一般满足特定输入模式的路径?
我知道我可以做类似的事情
parameters: {
"age": 20
}
MATCH (n)-[r:MY_RELATION]-() WHERE $age>18 AND $age<24 ...
当我只想匹配满足架构 { "type": "integer", "minimum": 19, "maximum": 23 } 的关系时。
但是我必须指定关系中的最小和最大范围。如果我想将字符串与模式或更复杂的类型(如带有子参数的地址等)进行匹配怎么办?
有通用的方法吗?
编辑: 我会尝试更清楚地说明这个问题。我想要的是一个图和一个(参数化的)查询来遍历该图,这样:
- 我得到了遍历中的所有节点
- 图中的关系对查询参数有一定的限制(例如整数的最小值)
- 遍历只遵循满足约束的边
- 我需要对整数进行约束,例如 min/max,但也对字符串进行约束,例如模式等。
编辑 2: 我想要的甚至可能都不可能。 我希望有关约束的所有信息都驻留在边缘,包括要测试的参数。所以我想要一些类似的东西
parameters: { "age": 20, "location": "A" }
MATCH (n)-[r]-()
WHERE r.testtype='integer' AND getParameterByName(r.testparamname) < r.max
OR r.testtype='string' AND getParameterByName(r.testparamname)=r.allowedStringValue
当然,正如在neo4j documentation about parameter functionality 中所读到的,应该不可能通过驻留在数据库中的名称来动态加载参数。
可能还有一些解决方法?
【问题讨论】: