Neo4j 返回某一年出生的学生的Cypher查询
在我的Neo4j数据库中,有一个节点,标记为students。学生节点具有date_of_birth属性,其类型为date(例如:date_of_birth:“1997-01-01”)。我想把所有在1997年出生的学生都还给他们 我试着这样做:Neo4j 返回某一年出生的学生的Cypher查询,neo4j,cypher,Neo4j,Cypher,在我的Neo4j数据库中,有一个节点,标记为students。学生节点具有date_of_birth属性,其类型为date(例如:date_of_birth:“1997-01-01”)。我想把所有在1997年出生的学生都还给他们 我试着这样做: match (n:Student) with n.date_of_birth as d where d.year="1997" return n 但我得到了这个错误: Neo.ClientError.Statement.SyntaxError:变量
match (n:Student)
with n.date_of_birth as d
where d.year="1997"
return n
但我得到了这个错误:
Neo.ClientError.Statement.SyntaxError:变量n
未定义(“返回n”^)
为什么此查询中没有定义n
,我应该如何更改查询以获得所需的结果?有两件事:
1) WITH
语句只显式地传递您告诉它的内容,因此如果希望n
在返回中可用,则需要包含n
2) 日期的.year
是数字,因此您需要将其与数字而不是字符串进行比较,因此1997
而不是“1997”
这将使查询:
MATCH (n:Student)
WITH n, n.date_of_birth as d
WHERE d.year == 1997
RETURN n
有两件事:
1) WITH
语句只显式地传递您告诉它的内容,因此如果希望n
在返回中可用,则需要包含n
2) 日期的.year
是数字,因此您需要将其与数字而不是字符串进行比较,因此1997
而不是“1997”
这将使查询:
MATCH (n:Student)
WITH n, n.date_of_birth as d
WHERE d.year == 1997
RETURN n
是否匹配(n:Student)where n.date\u of_birth.year=“1997”返回n
使用删除…否则,您需要在中包含n
…例如:将(n:Student)与n,n.date\u of_birth作为d where d.year=“1997”return n
…我尝试了你的两个建议,但在这两个建议中我都没有得到任何结果tryd.year=1997
如果没有引号,那么它很可能是一个数字…?现在我得到了预期的结果。非常感谢!是否匹配(n:Student)n.date\u of_birth.year=“1997”return n
执行该操作(即…使用
删除。。否则,您需要在中使用
包含n
。。例如:将(n:Student)与n,n.出生日期匹配为d,其中d.year=“1997”return n
…我尝试了你的两个建议,但都没有得到任何结果tryd.year=1997
如果没有引号,那么它很可能是一个数字…?现在我得到了预期的结果。非常感谢!