我们如何在密码中执行此操作?
有 n个父母p1,p2,p3 .... pn 和 m个孩子c1,c2,c3 ...... cm 。
假设 c1 来自(孩子的) p1,p2和p3 ,并且 c2 来自(孩子的) p1, p2和p3 。
鉴于 c1 ,我们能找到 c2 吗? (来自与c1相同的父母的节点)
一个孩子可以有1 ... n个父母。
答案 0 :(得分:7)
几周前我实际上在这里问了an extremely similar question,我得到的答案对你来说也只是稍微调整一下。
START c1=node(*), c2=node(*)
MATCH c1-[:ChildOf]->parent<-[:ChildOf]-c2
WITH c1, c2, count(parent) AS parentsFound
WHERE length(c1-[:ChildOf]->()) = parentsFound
AND length(c2-[:ChildOf]->()) = parentsFound
AND c1 <> c2
RETURN c1, c2
注意:据推测,您可以更好地选择c1
和c2
,而不是使用node(*)
。
此查询的逻辑逐行:
c1
和c2
,parent
和c1
c2
个
parent
的数量parent
的数量与parent
所拥有的c1
的总数相符。parent
的数量与parent
所拥有的c2
的总数相符。