Neo4j密码在所有条件下都存在

taor4pac  于 2022-10-01  发布在  其他
关注(0)|答案(2)|浏览(183)

如何正确编写以下Cypher查询:

MATCH (p:Profile)-[hvo:HAS_VOTE_ON]-(c:Criterion) 
WHERE c.id IN [1,2,3,4,5] 
WITH p, collect(hvo) as hvos 
WHERE size(hvos) = size( [1,2,3,4,5]) return count(p)

可以用exists或类似的东西重写吗?

我需要有效地检查p在所有c上是否都有:HAS_VOTE_ON,其中c在所提供的fIds列表中。做这样的检查最有效的方法是什么?我需要在逻辑AND中对此查询进行Cobine。例如-AND exists {...}

xwbd5t1u

xwbd5t1u1#

尝试使用ALL函数:

MATCH (c:Criterion)
WHERE c.id IN [1,2,3,4,5]
WITH COLLECT(c) AS criterias
MATCH (p:Profile)
WHERE ALL(criteria IN criterias WHERE (p)-[:HAS_VOTE_ON]-(criteria))
RETURN count(p)
jutyujz0

jutyujz02#

此查询在WHERE子句中使用EXISTS来检查配置文件是否在所有五个标准上都有_VOTE_。

MATCH (p:Profile)
WHERE ALL(cid in [1,2,3,4,5] 
   WHERE EXISTS((p)-[:HAS_VOTE_ON]-(:Criterion {id: cid})))
RETURN count(p)

请做一个分析,看看它是否会表现良好。

相关问题