我正在浏览neo4j文档,研究cypher的语法https://neo4j.com/docs/cypher-manual/current/syntax/expressions/#cypher-subquery-expressions
页面的一半是这个例子:
MATCH (person:Person)
WHERE COUNT {
WITH "Ozzy" AS dogName
MATCH (person)-[:HAS_DOG]->(d:Dog)
WHERE d.name = dogName
} = 1
RETURN person.name AS name
现在我想把它转换成在我的示例图中运行,作为节点PLAYER和TEAM,以及关系PLAYED_AGAINST。我转换后的查询是这样的:
MATCH (p:PLAYER)
WHERE COUNT {
WITH "Brooklyn Nets" AS teamName
MATCH (p)-[:PLAYED_AGAINST]->(t:TEAM)
WHERE t.name = teamName
} = 1
RETURN p.name AS name
我认为这与neo4j的文档完全匹配,但是,我得到了这个错误:
无效输入“WITH”:expected“(“、“allShortestPaths”或“shortestPath”(第3行,第5列(偏移量:35))“WITH“布鲁克林篮网”AS teamName”^
实际上看起来是这样的:
1.是文档不正确还是我遗漏了什么?
1.正确的语法是什么?
谢谢大家。
2条答案
按热度按时间k4ymrczo1#
[更新]
尽管COUNT子查询表达式是在neo4j 5.0中引入的,但直到5.3版本(通过测试验证)才支持子查询中的
WITH
子句。这个查询应该对你有用,而不是(首先没有充分的理由使用
WITH
):zu0ti5jz2#
你得到这个错误的最可能的原因是你没有使用Neo4j的最新版本。可能所有版本的Neo4j v5都使用这个语法,也许一些版本的v4,但可能不是很多。我有这两个查询,它们在Neo4j v5.5.0中工作