获取关系中的所有节点,而不是所有节点

问题描述 投票:0回答:1

我其实是在尝试这样的请求。我想要 :

  • 所有地理点。 从他们(地理)我想要他们所有的网络系统(NS)。 从他们(NS)我想要他们所有的机器。 从他们(机器)我想要他们所有的VLAN。 从他们(NS)我想要他们所有的网络系统。 从他们(NS)我想要他们所有的网络系统,但没有机器。

我的节点:

  • 地理
  • NS
  • VLAN

我的关系:

  • GeoNS
  • MachNS
  • NSNS
  • VLANMach

现在我有这个查询:

MATCH (a:Geo)-[b:GeoNS]-(c:NS)
OPTIONAL MATCH (c)-[d:MachNS]-(e:Machine)-[f:VLANMach]-(g:VLAN)
OPTIONAL MATCH (c)-[h:NSNS]-(i:NS)
OPTIONAL MATCH (c)-[p:NSNS]-(q:NS)
return a

但正如您所看到的,最后一个可选匹配基于具有计算机的NS。谢谢你的帮助。

neo4j cypher
1个回答
1
投票

你的最后一个OPTIONAL MATCH可以使用WHERE子句来过滤掉具有q关系的MachNS节点:

OPTIONAL MATCH (c)-[p:NSNS]-(q:NS)
WHERE NOT (q)-[:MachNS]-()

顺便说一句,你的RETURN子句无效,因为查询没有定义s变量。此外,查询应该返回所有匹配的结果。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.