我从 2 个月开始使用 Neo4j。我创建了一个 Neo4j 图,并在其中加载了 6M 个城市。我的图形存储大约有 6 个演出。每个城市有4个属性:
-
Name
-
Longitude
-
Latitude
-
Population
这些节点有一个标签City
,
我正在尝试使用 Neo4j 浏览器运行一些查询。我添加了一个索引:
CREATE INDEX ON :City(Name)
现在,如果我运行查询以查找如下所示的特定名称,那么结果就会非常快:
MATCH (n:City)
WHERE n.Name = 'New York'
RETURN n
但是当我只想在图表中拥有城市数量时,Unknown Error
上升,我无法获得我正在寻找的数字:
MATCH (N:City)
RETURN COUNT(n)
或
MATCH (n:City)
WHERE n.Name =~ 'New.*'
RETURN COUNT(n)
我在这里错过了什么吗?
您计算城市数量的代码是正确的,问题是 Cypher 区分大小写,您要返回的标识符必须与您在 MATCH 子句中指定的标识符大小写相同,您的代码应如下所示:
MATCH (n:City)
RETURN count(n)
对于您的第二个代码,它应该运行没有任何痒,您确定正确标记所有内容吗?至少它应该不返回任何行来指示没有名称以"New"开头的节点(在名为 City 的标签中)
MATCH (n:City)
WHERE n.Name =~ "New.*$"
RETURN count(n)
在查询中指定节点的属性时,不要忘记记住这种情况(例如,"name"与"Name"不同)