簡體   English   中英

neo4j減去路徑的元素

[英]neo4j subtract elements of a path

我正在嘗試在Cypher(Neo4)中使用此查詢:

MATCH p=(n:BP)-[:Selected]-(g:MOL)-[:Selected]-(e:BP) WHERE n.NameExp='Bos_RM' AND e.NameExp='Jac_RM' AND NONE(x IN nodes(p) WHERE x.NameExp='Jac_AGM' OR x.NameExp='Bos_SM')  RETURN n,e,g limit 100

也就是說,我想排除path(p)中具有屬性“ Jac_AGM”和“ Jac_SM”的某些節點。 我正在使用Neo4j版本2.1.3。

謝謝! 最好的祝福,R。

根據您的查詢,您已經提到了n和e個節點的NameExp屬性值。 因此,顯而易見的是,您不希望包含具有給定名稱的節點屬於g:MOL標記的節點集,可以像下面這樣簡單地將其消除...

MATCH p=(n:BP)-[:Selected]-(g:MOL)-[:Selected]-(e:BP) 
WHERE n.NameExp='Bos_RM' AND e.NameExp='Jac_RM' 
AND NOT g.NameExp IN ['Jac_AGM','Jac_SM']
RETURN n,e,g limit 100

還有一個顯式選項可以filter集合p節點:

MATCH p=(n:BP)-[:Selected]-(g:MOL)-[:Selected]-(e:BP)
WITH FILTER(x IN nodes(p): x.NameExp NOT IN ['Jac_AGM','Bos_SM']) AS pp, n, e
WHERE n.NameExp='Bos_RM' AND e.NameExp='Jac_RM'
RETURN n,e,g limit 100

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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