NEO4J查询与匹配,WHERE,不起作用

时间:2019-11-26 09:52:51

标签: neo4j where-clause sql-like

我要发出请求,但不起作用:

这是代码(在NEO4J沙箱中,csv文件在google表格中,可公开访问):

LOAD CSV WITH HEADERS FROM 'https://docs.google.com/spreadsheets/d/17UhQ3m2dE3wS4IsBjgv0ozcW_zH2rSBs2ZUdqeT4cQw/export?format=csv&id=17UhQ3m2dE3wS4IsBjgv0ozcW_zH2rSBs2ZUdqeT4cQw&gid=726094387' AS line

MERGE (cp:cp {Name:line.cp})
MERGE (commune:commune {Name:line.commune})
MERGE (voie:voie {Name:line.rao_libelle_voie})
MERGE (adr:adr {Name:line.adr_lib_ap_ocr_postal_0})
MERGE (name:name {Name:line.adr_l1_name})

MERGE (cp) -[:TO {dist:line.count} ]-> (commune)
MERGE (commune) -[:TO {dist:line.count} ]-> (voie)
MERGE (voie) -[:TO {dist:line.count} ]-> (adr)
MERGE (adr) -[:TO {dist:line.count} ]-> (name)

我的请求(我要输入(rao_libelle_voie,变量:voie)中一条街道的居民的名字(adr_l1_name,变量:name);

这是SQL请求(来自其他来源):

SELECT `adr_l1_name` 
  FROM `database`
  WHERE ` rao_libelle_voie ` LIKE '%RUE DE GLAIRE%'

结果有效;

在NEO4J沙箱中,我发出此请求:

MATCH (n:name)
WHERE (n:voie) = 'RUE DE GLAIRE'
RETURN (n:name)

没有错误消息,但没有结果出现;

1 个答案:

答案 0 :(得分:0)

更新了实际需要的操作

// match all of the name on a particular voie
MATCH (v:voie)--(:adr)--(n:name)
WHERE (v.Name) = 'RUE DE GLAIRE'

// return voie and the collection of names
RETURN v, collect(n) as names

旧答案

这只是您加载数据的方式与随后的要求之间的不匹配。标签和属性在Neo4j中区分大小写。

您使用小写标签(cp,commune,voi,addr,name)加载了所有数据,并将标识属性设置为大写Name

在查询中,您实际上是在寻找标签:name而不是:voie

如果您将查询更改为以下形式...

// match "voie" nodes identified by "n"
MATCH (n:voie)

// where the "Name" is "RUE DE GLAIRE" 
WHERE (n.Name) = 'RUE DE GLAIRE'

// return just the name
RETURN n.Name 

要使其更类似于您的SQL查询,您可以这样编写...

MATCH (n:voie)
WHERE (n.Name) CONTAINS 'RUE DE GLAIRE'
RETURN n.Name