2013-10-11 15 views
0

的CYPHER查詢迭代有房子沒有的爲節點,我想重複他們,並通過他們作爲參數創建人,房子沒有在這裏是代碼之間的關係..節點在這種情況下,IAM中的Neo4j

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

從以上我會得到房子裏沒有的節點,然後我想將它們傳遞到另一個查詢

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 

在上面的查詢我想通過房子沒有的節點特性ex:house_no

我如何迭代節點並傳遞屬性作爲參數.. 是否有機會將這兩個查詢結合起來?

任何人都可以幫助我嗎?

回答

2

可以開始子句中傳遞參數的索引查找這樣的:

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"} 
2

要結合您的查詢,您可以使用WITH。從documentation

在Cypher支架,該WITH子句用於管道的結果從一個查詢到next.`

我從來沒有嘗試立足於做索引查找「管道結果」 ,將這項工作:

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 
+0

謝謝你的答覆..但它的拋出錯誤,如..字符串文字或參數預期 「START n2 = node:node_auto_index(houseNo = house_No)」 – sakar