簡體   English   中英

Neo4j Cypher 在所有條件下都存在

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM