Cypher查询:
MATCH (x) WHERE x.uuid = "41f64ab1-6009-4e95-b22b-c833525f6edb" MATCH p =
(o)-[:CONTAINS|:HAVING*]->(x) WHERE labels(o) IN ['Box', 'Package'] RETURN p
在Neo4j浏览器中运行它会产生警告:
**WARNING: This feature is deprecated and will be removed in future versions.**
The semantics of using colon in the separation of alternative relationship
types in conjunction with the use of variable binding, inlined property
predicates, or variable length will change in a future version.
如何重新编写此查询以消除此警告?
提前致谢。
答案 0 :(得分:2)
此弃用并不是关于无法使用关系类型替代方案的,而是关于其语法的-请参见cypher deprecations in version 3.2。现在只有第一种类型具有冒号,即不是:R1|:R2
而是:R1|R2
。 Neo4j浏览器中的弃用警告表明,以前的语法将来会具有新的语义。
在模式中指定关系类型实际上比事后过滤路径更有效,这是Tom Geudens执行变通办法的方式。
答案 1 :(得分:0)
这可能会这样做:
MATCH (x) WHERE x.uuid = "41f64ab1-6009-4e95-b22b-c833525f6edb"
MATCH p = (o)-[*]->(x)
WHERE labels(o) IN ['Box', 'Package']
AND ALL (rs IN relationships(p) WHERE type(rs) IN ['CONTAINS','HAVING'])
RETURN p
希望这有帮助。
此致 汤姆