如何用Cypher提取包含User、Resource、Video、Course的子图?
如何提取包含全部4类节点的Cypher子图
要获取包含User、Resource、Video、Course四类节点的完整子图,只需在原有MATCH语句基础上补充匹配关联到Resource的Course节点即可,分两种场景处理:
场景1:确保每个Resource都关联有Course
如果所有Resource都对应存在Course节点,直接在MATCH子句中添加Course的匹配关系:
MATCH (u:User)-[w:WATCHED]->(r:Resource)-[:CONTAINS]->(v:Video), (c:Course)-[hr:HAS_RESOURCE]->(r) RETURN * LIMIT 50
这样会同时返回User、WATCHED关系、Resource、CONTAINS关系、Video、Course以及HAS_RESOURCE关系,覆盖你需要的全部结构。
场景2:部分Resource可能无关联Course
如果存在Resource没有对应的Course节点,用OPTIONAL MATCH可以保留原有匹配的节点,同时返回存在的Course相关数据:
MATCH (u:User)-[w:WATCHED]->(r:Resource)-[:CONTAINS]->(v:Video) OPTIONAL MATCH (c:Course)-[hr:HAS_RESOURCE]->(r) RETURN * LIMIT 50
这种情况下,即使某个Resource没有关联Course,User、Resource、Video的节点和关系依然会被返回,不会被过滤掉。
内容的提问来源于stack exchange,提问作者thomas
相关产品推荐
相关产品推荐

