无法使用冒号查询属性

时间:2013-11-18 13:22:32

标签: neo4j cypher neo4j-spatial

我是neo4j的新手,所以我的问题对你来说可能听起来很愚蠢但无论如何。

我将OSM数据集导入neo4j graph db。所以当前我试图从db查询不同的东西,比如:

MATCH (a) WHERE has(a.addr:street) RETURN a.addr:street

并且因sysntax错误而失败:

Type mismatch: expected Node but was Boolean, Number, String or Collection<Any> (line 1, column 23)
"MATCH (a) WHERE has(a.addr:street) RETURN a.addr:street"
                       ^

这很奇怪,因为节点有很多冒号(:)的属性。

有谁知道如何查询这些属性?

2 个答案:

答案 0 :(得分:2)

欢迎来到Neo4j!像:或空格这样的字符可能会在查询中引入歧义,因为它们在查询语言中可能很重要,这会使解析器出现问题。您仍然可以通过将表达式括在“反引号”中来使用这些字符,即

MATCH (a) WHERE has(a.`addr:street`) RETURN a.`addr:street`

您可以看到其他一些示例here

答案 1 :(得分:0)

cypher查询有三个部分:

开始,匹配和返回。 所以你的查询将是::

START a=node(1)
MATCH (a)-[:HAS]->(addr)-[:HAS]->(street)
RETURN street