Cypher - 从索引查询中重用节点

时间:2014-06-15 14:22:21

标签: neo4j cypher

我正在使用neo4j空间插件。 我试图做的是以下

1)在某个地理区域内找到人(使用距离和空间插件)

2)返回男性人员节点的数量

我的查询如下:

start n=node:geom('withinDistance:[12.0,13.0, 1000.0]')
match (n{sex:"m"}) return count(n)

现在我想计算总人数(并在同一查询中返回)。我怎样才能做到这一点? 当我将匹配条款应用到我已经找到的开始表达式的节点时,我将女性节点踢出去。有没有办法去节省"初始节点(n)并多次重复使用它们。当然,我可以这样做:

start n=node:geom('withinDistance:[12.0,13.0,1000.0]'),
q=node:geom('withinDistance:[12.0,13.0, 1000.0]')
match (n{sex:"m"}) return count(n), count(q)

我在这里匹配初始节点两次(neo4j可能会查询查询),但我想避免多次匹配相同数量的节点。

所以我真的很'我正在寻找类似的东西:

start n=node:geom('withinDistance:[12.0,13.0, 1000.0]')
return count(n), count (match (n{sex:"m"}))

1 个答案:

答案 0 :(得分:2)

使用WITH子句执行此操作。

您的查询应该是:

START q=node:geom('withinDistance:[12.0,13.0, 1000.0]')
WITH q MATCH (n{sex:"m"})
RETURN COUNT(q), COUNT(n);