节点在Neo4j的密码查询中迭代

时间:2013-10-11 09:50:29

标签: neo4j cypher

在这种情况下,iam将房子No's作为节点,我想迭代它们并将它们作为参数传递给人和房子之间的关系不在这里是代码..

START n=node(*)
WHERE 
  HAS(n.house_no) 
RETURN n;

从上面我将获得house no节点,然后我想将它们传递给另一个查询

START 
    n=node:node_auto_index(house_no="4-10"),
    n2=node:node_auto_index(houseNo="4-10") 
WHERE 
    HAS(n.house_no) AND HAS(n2.houseNo) AND n.house_no = n2.houseNo
    create UNIQUE
    (n2)-[:LIVESIN]->(n)
    return n2.name

在上面的查询中我想传递house no的节点属性ex:house_no

为什么我迭代节点并在其中传递属性作为参数.. 有没有机会结合这两个问题?

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

要合并您的查询,您可以使用WITH。来自documentation

  

在Cypher中,WITH子句用于将结果从一个查询传递到下一个查询。

我从未尝试过根据“管道结果”进行索引查找,这是否可行:

START n=node(*)
WHERE HAS(n.house_no)
WITH n.house_no as house_no
START n2=node:node_auto_index(houseNo=house_no)
CREATE UNIQUE n2-[:LIVESIN]->n
RETURN n2.name

答案 1 :(得分:2)

您可以在start子句中传递索引查找的参数,如下所示:

START 
    n =node:node_auto_index(house_no={house_no}),
    n2=node:node_auto_index(houseNo={house_no}) 
WHERE 
    HAS(n.house_no) AND HAS(n2.house_no) AND n.house_no = n2.houseNo
CREATE UNIQUE
    (n2)-[:LIVESIN]->(n)
RETURN n2.name

and then pass a map like


{house_no:"4-10"}