【发布时间】:2023-03-21 03:06:02
【问题描述】:
我正在尝试通过 2 个后续查询来传递一个变量。似乎 WITH 仅有助于将变量传递到下一个查询,但在此之前没有任何作用。有什么建议吗?
这是我正在尝试做的示例:
人物节点包含有关出版商、作家和编辑的信息(例如姓名、性别等)
故事节点包含有关故事的数据(例如标题、发布日期等)
IN 关系具有类别:创建、编辑、发布。
返回编辑过其他编辑出版商发布的故事的编辑出版商:
假设没有重复的人名
- 查找所有编辑过至少一篇文章并发表过至少一篇文章的人
- 查找这些编辑出版商在 1 中发表的故事列表
- 在 2 中故事的所有编辑器中,返回这些编辑器的子列表也在 1 中
MATCH (EditorPublisher:Person)-[:IN{category: "published"}]->(:Story) // 1
WHERE (EditorPublisher:Person)-[:IN{category: "edited"}]->(:Story)
WITH COLLECT(EditorPublisher.name) as EditorPublisher_list
MATCH (EditorPublisher_stories:Story)<-[:IN{category: "published"}]-(publisher:Person) // 2
WHERE publisher.name in EditorPublisher_list
WITH EditorPublisher_list // throws error EditorPublisher_list variable not found
WITH COLLECT(EditorPublisher_stories.title) as EditorPublisher_stories_list
MATCH (epe:Person)-[contribution:PLAYED]-(eps:Movie) // 3
WHERE epe.name in EditorPublisher_list
AND eps IN EditorPublisher_stories_list
RETURN epe.name
【问题讨论】:
-
也许将结果保存到文件和后处理?
-
1.您的前 2 个查询不是完整的查询(它们不返回任何内容)。 2. 为什么不能将所有 3 个查询合并为一个查询? 3. 如果它们仍然是单独的查询,那么中间结果是否可能会变得陈旧,导致最后 2 个查询中的 1 个或 2 个不能返回准确和完整的结果?
标签: variables neo4j pipe with-statement