Return 个在另一个节点集中没有 属性 值的节点
Return nodes which do not have a property value in another node set
我是 Neo4j 的新手,但无法在文档中找到我要找的内容。我使用的是不支持子查询的 3.5 版。
我有两组节点,为简单起见,我将其称为 Rocks
和 Bicycles
。这些集合有一些相似的属性,但没有关系,而且它们完全不同——Rocks
中没有节点在 Bicycles
中。但是,对于称为“颜色”的特定 属性,它们可能具有相同的值。但是对于 Rocks
中的节点 属性 拼写为 color
而对于 Bicycles
中的节点拼写为 colour
.
我想要的是 return Bicycles
中的所有节点,这些节点在 Rocks
中的任何节点中都没有 colour
值。
这是我对 return Rocks
中节点的所有颜色的查询:
MATCH (r:Rocks) WITH r.color AS excludecolors RETURN excludecolors
这 return 正是我所期望的 - 颜色的十六进制值列表:["ff5733", "#0a8a00", "4f28ff", ...]
现在我想 return Bicycles
中的所有颜色 独家 我在 Rocks
[ 的集合中找到的颜色=33=]
MATCH (r:Rocks) WITH r.color AS excludecolors RETURN excludecolors
MATCH (b:Bicycles) WHERE NOT b.colour IN [excludecolors] RETURN DISTINCT b.colour
然而,这 return 是自行车中的所有东西 - 包括 excludecolors
中的颜色!我可以通过输入我想排除的特定值来手动排除它们:
MATCH (b:Bicycles) WHERE NOT b.colour IN ["ff5733", "#0a8a00"] RETURN DISTINCT b.colour
但是手工做的事情太多了。我如何才能 return 只有 Bicycles
而不是 Rocks
中的颜色?我能想到的最接近的等价物是 SQL 外连接,但我对如何在 cypher
中做到这一点感到很困惑
这应该有效:
MATCH (r:Rocks)
WITH COLLECT(DISTINCT r.color) AS excludeColors
MATCH (b:Bicycles)
WHERE NOT b.colour IN excludeColors
RETURN DISTINCT b.colour
我是 Neo4j 的新手,但无法在文档中找到我要找的内容。我使用的是不支持子查询的 3.5 版。
我有两组节点,为简单起见,我将其称为 Rocks
和 Bicycles
。这些集合有一些相似的属性,但没有关系,而且它们完全不同——Rocks
中没有节点在 Bicycles
中。但是,对于称为“颜色”的特定 属性,它们可能具有相同的值。但是对于 Rocks
中的节点 属性 拼写为 color
而对于 Bicycles
中的节点拼写为 colour
.
我想要的是 return Bicycles
中的所有节点,这些节点在 Rocks
中的任何节点中都没有 colour
值。
这是我对 return Rocks
中节点的所有颜色的查询:
MATCH (r:Rocks) WITH r.color AS excludecolors RETURN excludecolors
这 return 正是我所期望的 - 颜色的十六进制值列表:["ff5733", "#0a8a00", "4f28ff", ...]
现在我想 return Bicycles
中的所有颜色 独家 我在 Rocks
[ 的集合中找到的颜色=33=]
MATCH (r:Rocks) WITH r.color AS excludecolors RETURN excludecolors
MATCH (b:Bicycles) WHERE NOT b.colour IN [excludecolors] RETURN DISTINCT b.colour
然而,这 return 是自行车中的所有东西 - 包括 excludecolors
中的颜色!我可以通过输入我想排除的特定值来手动排除它们:
MATCH (b:Bicycles) WHERE NOT b.colour IN ["ff5733", "#0a8a00"] RETURN DISTINCT b.colour
但是手工做的事情太多了。我如何才能 return 只有 Bicycles
而不是 Rocks
中的颜色?我能想到的最接近的等价物是 SQL 外连接,但我对如何在 cypher
这应该有效:
MATCH (r:Rocks)
WITH COLLECT(DISTINCT r.color) AS excludeColors
MATCH (b:Bicycles)
WHERE NOT b.colour IN excludeColors
RETURN DISTINCT b.colour