[英]Neo4j Cypher exists with all condition
如何正確編寫以下 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
在提供的Ids
列表中。 進行此類檢查的最有效方法是什么? 我需要在邏輯AND
中結合這個查詢 .. 例如 - AND exists {...}
此查詢在 WHERE 子句中使用 EXISTS 來檢查 Profile HAS_VOTE_ON 是否所有五個 Criterion。
MATCH (p:Profile)
WHERE ALL(cid in [1,2,3,4,5]
WHERE EXISTS((p)-[:HAS_VOTE_ON]-(:Criterion {id: cid})))
RETURN count(p)
請做一個分析,看看它是否會表現良好。
嘗試使用ALL
function:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.