首页 > 解决方案 > Cypher 查询返回某年出生的学生

问题描述

在我的 Neo4j 数据库中,有一个节点,标记为学生。学生节点具有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: Variable nnot defined ("return n"^)

为什么n未在此查询中定义,我应该如何更改查询以获得我需要的结果?

标签: neo4jcypher

解决方案


有两件事:

1)该WITH语句仅明确地继承您告诉它的内容,因此如果您想n在 a 中使用,RETURN您需要包括n

2).yearadate是数字的,所以你需要将它与数字而不是字符串进行比较,所以1997而不是"1997"

这将使查询:

MATCH (n:Student)
WITH n, n.date_of_birth as d
WHERE d.year == 1997
RETURN n

推荐阅读