Neo4j文档提供了一个语法错误的示例,尝试在WITH语句中使用COUNT

jxct1oxe  于 2023-03-29  发布在  其他
关注(0)|答案(2)|浏览(152)

我正在浏览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.正确的语法是什么?
谢谢大家。

k4ymrczo

k4ymrczo1#

[更新]
尽管COUNT子查询表达式是在neo4j 5.0中引入的,但直到5.3版本(通过测试验证)才支持子查询中的WITH子句。
这个查询应该对你有用,而不是(首先没有充分的理由使用WITH):

MATCH (p:PLAYER)
WHERE COUNT {
    MATCH (p)-[:PLAYED_AGAINST]->(t:TEAM)
    WHERE t.name = "Brooklyn Nets"
} = 1
RETURN p.name AS name
zu0ti5jz

zu0ti5jz2#

你得到这个错误的最可能的原因是你没有使用Neo4j的最新版本。可能所有版本的Neo4j v5都使用这个语法,也许一些版本的v4,但可能不是很多。我有这两个查询,它们在Neo4j v5.5.0中工作

相关问题