首页 文章

Neo4j是否可以在作为计数功能结果的关系上设置属性

提问于
浏览
0

使用示例电影数据库,我试图在导演和演员之间 Build 一种新的关系,使得关系上存在“关系强度”属性,即导演指导演员的时间 .

以下进行连接:

MATCH (t)-[a]->(m)<-[d]-dir 
WHERE t.name CONTAINS "Tom H" AND type(a) CONTAINS "ACT" AND type(d) CONTAINS "DIR" 
MERGE (dir)-[r:DIRECTED]->t  
RETURN t, dir

并且可以找到关系强度

MATCH (t)-[a]->(m)<-[d]-dir 
WHERE t.name CONTAINS "Tom H" AND type(a) CONTAINS "ACT" AND type(d) CONTAINS "DIR"  
RETURN dir.name, COLLECT(m.title) AS movies, count(m) AS RelationshipStrength

我想有效地将DIRECTED上的属性设置为relationshipStrength .

这可能吗?或者必须指望在RETURN语句后使用,而设置和合并必须在RETURN语句之前?

1 回答

  • 0

    好没问题:

    MATCH (t)-[a]->(m)<-[d]-dir 
    WHERE t.name CONTAINS "Tom H" AND type(a) CONTAINS "ACT" AND type(d) CONTAINS "DIR"  
    WITH dir, t, COLLECT(m.title) AS movies, count(m) AS RelationshipStrength
    MERGE (dir)-[r:DIRECTED]->(t) ON CREATE SET r.strength = RelationshipStrength
    RETURN dir.name, t.name, movies, RelationshipStrength
    

    你可能知道你可以直接在模式中使用像 :ACTED_IN 这样的rel类型吗?并且您在实际查询中使用参数 .

    我还会使用不同的关系类型来从其他 :DIRECTED 关系中辨别它 .

相关问题