Neo4J得到更深的节点

时间:2014-10-02 11:43:07

标签: neo4j

我的查询有问题,如何获得所有关系WHERE第二个节点有一个属性

CREATE (spol:Spoldzielnia { value : 'Poludnie' })
CREATE (mT:Home { value : 'Trojanska' })
CREATE (mR:Home { value : 'Renesansowa' })
CREATE (mK:Home { value : 'Kasandry' })
CREATE (pS:Person { value : 'Slawek' })
CREATE (pR:Person { value : 'Remek' })
CREATE (pW:Person { value : 'Wojtek' })
CREATE (pK:Person { value : 'Krzychu' })
CREATE (pB:Person { value : 'Bolek' })
CREATE (pC:Person { value : 'Czesław' })
CREATE (pTT:Person { value : 'Tosiek' })
CREATE (pZZ:Person { value : 'Zbychu' })
CREATE (pWW:Person { value : 'Wlodek' })
CREATE (pFF:Person { value : 'Franko' })
CREATE (pMM:Person { value : 'Mietek' })
CREATE (i01:Item { value : 'telefon'})
CREATE (i02:Item { value : 'komputer'})
CREATE (i03:Item { value : 'laptop'})
CREATE (i04:Item { value : 'telefon'})
CREATE (i05:Item { value : 'komputer'})
CREATE (i06:Item { value : 'laptop'})
CREATE (mT)-[:HAS]->(spol)
CREATE (mR)-[:HAS]->(spol)
CREATE (mK)-[:HAS]->(spol)
CREATE (pS)-[:HAS]->(mT)
CREATE (pR)-[:HAS]->(mT)
CREATE (pW)-[:HAS]->(mT)
CREATE (pK)-[:HAS]->(mR)
CREATE (pB)-[:HAS]->(mR)
CREATE (pC)-[:HAS]->(mR)
CREATE (pTT)-[:HAS]->(mK)
CREATE (pZZ)-[:HAS]->(mK)
CREATE (pWW)-[:HAS]->(mK)
CREATE (pFF)-[:HAS]->(mK)
CREATE (pMM)-[:HAS]->(mK)
CREATE (i01)-[:HAS]->(pS)
CREATE (i02)-[:HAS]->(pS)
CREATE (i03)-[:HAS]->(pS)
CREATE (i04)-[:HAS]->(pR)
CREATE (i05)-[:HAS]->(pR)
CREATE (i06)-[:HAS]->(pR)

我创造了类似这样的东西

MATCH (sp:Spoldzielnia)<-[r:HAS]-(h:Home)<--(x) WHERE h.value = 'Trojanska' return *

但是没有给我更深的节点,如:telefon,komputer,与该人相关的笔记本电脑


示例2:

CREATE (spol:Spoldzielnia { value : 'Poludnie' })
CREATE (mT:Home { value : 'Trojanska' })
CREATE (mR:Home { value : 'Renesansowa' })
CREATE (mK:Home { value : 'Kasandry' })
CREATE (pS:Person { value : 'Slawek' })
CREATE (pR:Person { value : 'Remek' })
CREATE (pW:Person { value : 'Wojtek' })
CREATE (pK:Person { value : 'Krzychu' })
CREATE (pB:Person { value : 'Bolek' })
CREATE (pC:Person { value : 'Czesław' })
CREATE (pTT:Person { value : 'Tosiek' })
CREATE (pZZ:Person { value : 'Zbychu' })
CREATE (pWW:Person { value : 'Wlodek' })
CREATE (pFF:Person { value : 'Franko' })
CREATE (pMM:Person { value : 'Mietek' })
CREATE (i01:Item { value : 'telefon'})
CREATE (i02:Item { value : 'komputer'})
CREATE (i03:Item { value : 'laptop'})
CREATE (i04:Item { value : 'telefon'})
CREATE (i05:Item { value : 'komputer'})
CREATE (i06:Item { value : 'laptop'})
CREATE (i07:hardware { value : 'modem'})
CREATE (i08:option { value : 'wifi'})
CREATE (i09:option { value : 'usb'})
CREATE (mT)-[:HAS]->(spol)
CREATE (mR)-[:HAS]->(spol)
CREATE (mK)-[:HAS]->(spol)
CREATE (pS)-[:HAS]->(mT)
CREATE (pR)-[:HAS]->(mT)
CREATE (pW)-[:HAS]->(mT)
CREATE (pK)-[:HAS]->(mR)
CREATE (pB)-[:HAS]->(mR)
CREATE (pC)-[:HAS]->(mR)
CREATE (pTT)-[:HAS]->(mK)
CREATE (pZZ)-[:HAS]->(mK)
CREATE (pWW)-[:HAS]->(mK)
CREATE (pFF)-[:HAS]->(mK)
CREATE (pMM)-[:HAS]->(mK)
CREATE (i01)-[:HAS]->(pS)
CREATE (i02)-[:HAS]->(pS)
CREATE (i03)-[:HAS]->(pS)
CREATE (i04)-[:HAS]->(pR)
CREATE (i05)-[:HAS]->(pR)
CREATE (i06)-[:HAS]->(pR)
CREATE (i07)-[:HAS]->(i02)
CREATE (i08)-[:HAS]->(i07)
CREATE (i09)-[:HAS]->(i06)

1 个答案:

答案 0 :(得分:0)

你只需要通过关系进一步提高你的查询,例如:

MATCH (sp:Spoldzielnia)<-[r:HAS]-(h:Home)<--(p:Person)<-[r2:HAS]-(item:Item)
WHERE h.value = 'Trojanska' 
return item;

返回:

+----------------------------+
| item                       |
+----------------------------+
| Node[20]{value:"laptop"}   |
| Node[19]{value:"komputer"} |
| Node[18]{value:"telefon"}  |
| Node[17]{value:"laptop"}   |
| Node[16]{value:"komputer"} |
| Node[15]{value:"telefon"}  |
+----------------------------+

请注意,HASPerson之间的Item关系是倒退的;你已经建模Item有一个Person,而它应该是另一种方式。 :)