计数重复
Count duplicated
假设我有一个图,其中对于类型为 Nod1 的每一对节点 m,n 可以有一个类型为 Nod2 的节点 k 通过 Rel 类型的关系连接它们,也就是说,可以有多个模式那种 p=(m:Nod1)-[r:Rel]-(k:Nod2)-[s:Rel]-(n:Nod1)。对于给定的节点 m(例如满足 m.key="whatever"),我如何找到使连接 m 和 n 的节点 k 的数量最大化的节点 n?例如:假设有3个节点k连接m到n1满足n1.key="hello",10个节点k连接m到n2满足n2.key="world";如何构建检索节点 n2 的查询? :)
问题的标题是count duplicated,因为我认为如果我可以计算每个节点n的所有"duplicated"模式(即所有n为[=18的模式),问题就解决了=])!! :)
首先匹配您的m
;然后匹配你想要的模式,然后按不同的 n
节点过滤,并计算通过该 n
节点连接的 k
节点的数量,你应该在那里。
MATCH (m:Nod1 { key: "whatever" })
WITH m
MATCH (m)-[r:Rel]-(k:Nod2)-[s:Rel]-(n:Nod1)
RETURN distinct(n), count(k) as x
ORDER BY x DESC;
假设我有一个图,其中对于类型为 Nod1 的每一对节点 m,n 可以有一个类型为 Nod2 的节点 k 通过 Rel 类型的关系连接它们,也就是说,可以有多个模式那种 p=(m:Nod1)-[r:Rel]-(k:Nod2)-[s:Rel]-(n:Nod1)。对于给定的节点 m(例如满足 m.key="whatever"),我如何找到使连接 m 和 n 的节点 k 的数量最大化的节点 n?例如:假设有3个节点k连接m到n1满足n1.key="hello",10个节点k连接m到n2满足n2.key="world";如何构建检索节点 n2 的查询? :)
问题的标题是count duplicated,因为我认为如果我可以计算每个节点n的所有"duplicated"模式(即所有n为[=18的模式),问题就解决了=])!! :)
首先匹配您的m
;然后匹配你想要的模式,然后按不同的 n
节点过滤,并计算通过该 n
节点连接的 k
节点的数量,你应该在那里。
MATCH (m:Nod1 { key: "whatever" })
WITH m
MATCH (m)-[r:Rel]-(k:Nod2)-[s:Rel]-(n:Nod1)
RETURN distinct(n), count(k) as x
ORDER BY x DESC;