我有具有以下属性的节点
(n:User {valUpper:100, valLower:-100})
(m:User {valUpper:200, valLower: 0})
使用 cypher 是否可以找到 (m) 的范围是否与 (n) 重叠?
这就是我在 js 中所做的。
if max(x2, y2) - min(x1, y1) < (x2 - x1) + (y2 - y1) {
//Ranges Overlap
}
我有具有以下属性的节点
(n:User {valUpper:100, valLower:-100})
(m:User {valUpper:200, valLower: 0})
使用 cypher 是否可以找到 (m) 的范围是否与 (n) 重叠?
这就是我在 js 中所做的。
if max(x2, y2) - min(x1, y1) < (x2 - x1) + (y2 - y1) {
//Ranges Overlap
}
Apoc 是非常值得的选择。只想为不想启用 apoc 的人提一下非 apoc 方式。
WITH n.valUpper as x1, n.valLower as y1, m.valUpper as x2, m.valLower as y2
RETURN
CASE WHEN x2 > y2 THEN x2 ELSE y2 END -
CASE WHEN x1 < y1 THEN x1 ELSE y1 END
< (x2 - x1) + (y2 - y1)
使用您的 javascript 示例中的公式,您可以这样做
... here you match for n and m ...
WITH n.valUpper as x1, n.valLower as y1, m.valUpper as x2, m.valLower as y2
RETURN apoc.coll.max([x2, y2]) - apoc.coll.min([x1, y1]) < (x2 - x1) + (y2 - y1)
希望这可以帮助。
问候,汤姆