Cypher - 返回节点及其与关系上的计数约束的关系

时间:2014-11-20 10:34:07

标签: neo4j cypher nosql

此问题与that one有关。

我解释了我的小用例以更好地理解我的问题:

我有这种图表 (doc)-[contain]-(sentence)-[with]-(word)

节点(word)可以在它们之间具有语义关系(word)-[rel]-(word)

我想返回(doc)一些[rel]> 10

此查询可以这样做:

MATCH (doc:document)-[contain]-(sentence)-[with]-(ng1:word)-[rel:relations]-(ng2:word)
WITH doc, count(rel) as nbRels, collect(rel) as rels
WHERE nbRels > 10 RETURN doc, nbRels, rels

但我不知道每个[rel]发现了什么(字)。

有可能知道并返回吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

未经测试,但您应该能够展开rels集合并拉出开始和结束节点。类似的东西:

MATCH (doc:document)-[contain]-(sentence)-[with]-(ng1:word)-[rel:relations]-(ng2:word)
WITH doc, count(rel) as nbRels, collect(rel) as rels
WHERE nbRels > 10
WITH doc, UNWIND(rels) as rel,
RETURN doc, STARTNODE(rel), ENDNODE(rel)

但你可能只是想首先收集不同的东西:

MATCH (doc:document)-[contain]-(sentence)-[with]-(ng1:word)-[rel:relations]-(ng2:word)
WITH doc, ng1, collect(ng2) as rels
WHERE LENGTH(rels) > 10 
RETURN doc, ng1, rels