【发布时间】:2019-07-09 19:14:38
【问题描述】:
数据库结构:
(:Event)-[:IS_TAGGED_BY]->(:EventTag {value})
结构评论:
- 有事件节点
- 有 EventTag 节点
- 标记节点有一个字符串属性,称为“值”
- 可以通过 IS_TAGGED_BY 传出 rel 标记事件
我需要编写一个查询,它只返回那些由一组特定标签标记的事件。
这样的查询可能有两种变体,它们返回:
- 事件,由至少一个指定标签标记(我们称之为
findTaggedByAny)。 - 事件,由所有指定标签标记(我们称之为
findTaggedByAll)。
我可以写findTaggedByAny查询:
MATCH (et:EventTag)--(e:Event) WHERE et.value in {0} RETURN e
此处的 {0} - 将替换包含一组标记值的查询参数。
因此,替换后的查询将如下所示:
MATCH (et:EventTag)--(e:Event) WHERE et.value in ["tag1", "tag2"] RETURN e
但是我在尝试实现findTaggedByAll 查询时遇到了困难,它也应该采用相同的参数并返回事件,由集合中的所有标签标记。并且事件是否被任何其他标签标记并不重要。
【问题讨论】:
-
那么,你想要
RETURN:Event只连接到指定:EventTag节点的节点吗? ...或至少连接到指定:EventTag节点的:Event节点?即,它们也可以连接到未指定的:EventTag节点。 -
@rickhg12hs 抱歉,我的问题不清楚。它们可能连接到任何其他标签,没关系。我修改了我的问题以澄清问题的其他方面。
-
:Tag=:EventTag? -
@rickhg12hs 是的!
标签: neo4j spring-data cypher spring-data-neo4j