在neo4j中同时更新多个具有相同标签的节点
Update more than one nodes with the same label at the same time in neo4j
如何在 neo4j.I 中同时更新具有相同标签的这三个节点尝试了以下但它不起作用。
方法一:
START n=node(0)
MATCH n-[r:HAS_GRADE]->(g:Grade)-[r1:HAS_SYLLABUS]->(sy:Syllabus)
OPTIONAL MATCH (sy)-[:HAS_CHILD]->(s:Subject) SET s:Publish WITH s
OPTIONAL MATCH (s)-[:HAS_CHILD]->(c:Chapter) SET c:Publish WITH c
OPTIONAL MATCH (c)-[:HAS_CHILD]->(t:Topic) SET t:Publish
RETURN s;
方法二
START n=node(0)
MATCH n-[r:HAS_GRADE]->(g:Grade)-[r1:HAS_SYLLABUS]->(sy:Syllabus)
OPTIONAL MATCH (sy)-[:HAS_CHILD]->(s:Subject)
OPTIONAL MATCH (s)-[:HAS_CHILD]->(c:Chapter)
OPTIONAL MATCH (c)-[:HAS_CHILD]->(t:Topic) WITH s,c,t
SET s:Publish
SET c:Publish
SET t:Publish
RETURN s;
方法三
START n=node(0)
MATCH n-[r:HAS_GRADE]->(g:Grade)-[r1:HAS_SYLLABUS]->(sy:Syllabus)
OPTIONAL MATCH (sy)-[:HAS_CHILD]->(s:Subject)
OPTIONAL MATCH (s)-[:HAS_CHILD]->(c:Chapter)
OPTIONAL MATCH (c)-[:HAS_CHILD]->(t:Topic) WITH s,c,t
SET s:Publish, c:Publish, t:Publish
RETURN s
我是否需要 运行 此查询 3 次才能更新三个节点。或者有什么替代方法吗?请帮忙。
怎么样:
START n=node(0)
MATCH n-[r:HAS_GRADE]->(g:Grade)-[r1:HAS_SYLLABUS]->(sy:Syllabus)-[:HAS_CHILD*]->(c)
WHERE any(x in labels(c) WHERE x in ["Subject","Chapter","Topic"])
SET c :Publish
RETURN c
WHERE
确保 HAS_CHILD
的末端节点带有列表中给定的标签之一。
我们使用可变路径长度(参见 *
)和 HAS_CHILD
来获取所有子节点。
如何在 neo4j.I 中同时更新具有相同标签的这三个节点尝试了以下但它不起作用。
方法一:
START n=node(0)
MATCH n-[r:HAS_GRADE]->(g:Grade)-[r1:HAS_SYLLABUS]->(sy:Syllabus)
OPTIONAL MATCH (sy)-[:HAS_CHILD]->(s:Subject) SET s:Publish WITH s
OPTIONAL MATCH (s)-[:HAS_CHILD]->(c:Chapter) SET c:Publish WITH c
OPTIONAL MATCH (c)-[:HAS_CHILD]->(t:Topic) SET t:Publish
RETURN s;
方法二
START n=node(0)
MATCH n-[r:HAS_GRADE]->(g:Grade)-[r1:HAS_SYLLABUS]->(sy:Syllabus)
OPTIONAL MATCH (sy)-[:HAS_CHILD]->(s:Subject)
OPTIONAL MATCH (s)-[:HAS_CHILD]->(c:Chapter)
OPTIONAL MATCH (c)-[:HAS_CHILD]->(t:Topic) WITH s,c,t
SET s:Publish
SET c:Publish
SET t:Publish
RETURN s;
方法三
START n=node(0)
MATCH n-[r:HAS_GRADE]->(g:Grade)-[r1:HAS_SYLLABUS]->(sy:Syllabus)
OPTIONAL MATCH (sy)-[:HAS_CHILD]->(s:Subject)
OPTIONAL MATCH (s)-[:HAS_CHILD]->(c:Chapter)
OPTIONAL MATCH (c)-[:HAS_CHILD]->(t:Topic) WITH s,c,t
SET s:Publish, c:Publish, t:Publish
RETURN s
我是否需要 运行 此查询 3 次才能更新三个节点。或者有什么替代方法吗?请帮忙。
怎么样:
START n=node(0)
MATCH n-[r:HAS_GRADE]->(g:Grade)-[r1:HAS_SYLLABUS]->(sy:Syllabus)-[:HAS_CHILD*]->(c)
WHERE any(x in labels(c) WHERE x in ["Subject","Chapter","Topic"])
SET c :Publish
RETURN c
WHERE
确保 HAS_CHILD
的末端节点带有列表中给定的标签之一。
我们使用可变路径长度(参见 *
)和 HAS_CHILD
来获取所有子节点。