【问题标题】:MATCH on nodes in a two-dimensional COLLECTION in Neo4j / Cypher在 Neo4j / Cypher 中的二维 COLLECTION 中的节点上匹配
【发布时间】:2014-03-27 11:06:52
【问题描述】:

为了限制通过 Neo4j 图数据库的遍历,我正在从子图中收集分数。想象一下(简化)

MATCH (a)-[:r1 {prop1:123}]->()-[]->()-[]->()-[]->(b {prop2:456}) 
WITH b,b.prop2*r1.prop1 as score ORDER BY score DESC LIMIT 10
WITH COLLECT ([b,score]) AS bscore

到目前为止,一切都很好。为了避免长时间遍历,我想将下一个匹配限制为存储在 bscore 中的节点 b 并将 bscore[1] 中的分数相加,但我找不到正确的语法。甚至想知道在密码中是否有可能。从概念上讲,我想这样做:

MATCH bscore[0]-[:r2]->(c)
RETURN c, SUM(bscore[1])

高度赞赏任何提示/指针。

【问题讨论】:

    标签: collections neo4j match cypher


    【解决方案1】:

    你能做这样的事情吗?

    MATCH (a)-[:r1 {prop1:123}]->()-[]->()-[]->()-[]->(b {prop2:456}) 
    WITH b,b.prop2*r1.prop1 as score ORDER BY score DESC LIMIT 10
    MATCH b-[:r2]->(c)
    RETURN c, sum(score)
    

    【讨论】:

    • r1:prop1 中的错字虽然.. 应该是 r1.prop1
    • 您也可以将长匿名模式缩短为 (a)-[:r1]->()->[*3]->(b)
    • 这只是一个例子,表明 (a) 节点可能在很远的地方,我希望避免恢复到它的整个路径
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多