Neo4j 匹配包含相同标签值的所有节点,但不知道该值
我的节点都是网络主机。其中一个属性是ip地址。我想匹配具有相同IP地址的所有主机。无需输入任何IP地址 我尝试了下面的代码-没有用。继续并最终超时。 大约25000个节点Neo4j 匹配包含相同标签值的所有节点,但不知道该值,neo4j,Neo4j,我的节点都是网络主机。其中一个属性是ip地址。我想匹配具有相同IP地址的所有主机。无需输入任何IP地址 我尝试了下面的代码-没有用。继续并最终超时。 大约25000个节点 MATCH (n), (m) WHERE ID(n) < ID(m) AND ANY(x IN n.ip WHERE x IN m.ip) RETURN n, m; 匹配(n)、(m) 其中ID(n)(m)返回r,n.domain,m.ipBrilliant,有效。是否有任何方法可以在域和IP地址之间创建关系。这可能是
MATCH (n), (m)
WHERE ID(n) < ID(m) AND ANY(x IN n.ip WHERE x IN m.ip)
RETURN n, m;
匹配(n)、(m)
其中ID(n)
那么您只想按公共IP值对节点进行分组?您只需要一个匹配项和一个collect()即可:
MATCH (n)
WITH n.ip as ipAddress, collect(n) as nodes
WHERE size(nodes) > 1
RETURN ipAddress, nodes
如果您希望按每个ip地址的大多数节点排序,可以选择添加
按大小排序(节点)DESC
。那么您只想按公共ip值对节点进行分组?您只需要一个匹配项和一个collect()即可:
MATCH (n)
WITH n.ip as ipAddress, collect(n) as nodes
WHERE size(nodes) > 1
RETURN ipAddress, nodes
如果希望按每个ip地址的节点数排序,可以选择添加
按大小排序(节点)DESC
。是否需要确认密码语法的正确性?请重新陈述您的问题,以便其他人能够准确地作出贡献是的,确认提供的代码段是否应解决问题您需要确认密码语法的正确性吗?请重新陈述您的问题,以便其他人能够准确地作出贡献是的,确认提供的代码片段是否应该解决问题Brilliant,这是有效的。是否有任何方法可以在域和IP地址之间创建关系。这可能是因为它们是同一个节点的属性吗?我不知道我是否理解。关系是节点之间的关系,而不是属性之间的关系。如果有:域节点和:IPAddress节点,则可以在它们之间创建关系。我想你需要澄清一下。谢谢你的回复。我理解。我在想是否有办法使用我当前的数据集。我意识到我必须对它做一些改变。基本上,我有一个csv文件,其中包含托管域到IP地址(以及一些其他数据)。我想通过显示它们作为关系承载的域来说明大多数域的IP。听起来你需要两个单独标签的节点来实现这一点,而不是CSV的每行都有一个节点,然后每行你可以在合并的两个节点之间创建关系。我尝试了以下方法:匹配(n),(m)其中n.domain=m.domain CREATE(n)-[r:RESOLVES]->(m)返回r,n.domain,m.ipBrilliant,有效。是否有任何方法可以在域和IP地址之间创建关系。这可能是因为它们是同一个节点的属性吗?我不知道我是否理解。关系是节点之间的关系,而不是属性之间的关系。如果有:域节点和:IPAddress节点,则可以在它们之间创建关系。我想你需要澄清一下。谢谢你的回复。我理解。我在想是否有办法使用我当前的数据集。我意识到我必须对它做一些改变。基本上,我有一个csv文件,其中包含托管域到IP地址(以及一些其他数据)。我想通过显示它们作为关系承载的域来说明大多数域的IP。听起来你需要两个单独标签的节点来实现这一点,而不是CSV的每行都有一个节点,然后每行你可以在合并的两个节点之间创建关系。我尝试了以下方法:匹配(n),(m)其中n.domain=m.domain CREATE(n)-[r:RESOLVES]->(m)返回r,n.domain,m.ip