代码之家  ›  专栏  ›  技术社区  ›  Kevin Cohen

c中的Neo4j标量函数#

  •  0
  • Kevin Cohen  · 技术社区  · 7 年前

    startNode(relationship), endNode(relationship) 它将给出给定关系的节点的开始和结束。

    match p=(n1 {Identifier:<id>})-[:r1|r2*2]-(n2) unwind relationships(p) as rel return distinct startNode(rel) as n1, type(rel), endNode(rel) as n2
    

    如果我不指定startNode或endNode,我将得到实际上彼此未连接的额外节点。

    目前我有:

     var data = client.Cypher.Match("(n1)")
                .Where((Node n1) => n1.Identifier == identifier)
                .OptionalMatch("p=(n1)-[:r1|r1*2"]-(n2)")
                .Unwind("relationships(p)", "rel")
                .ReturnDistinct((n1, rel, n2) => new
                {
                    startNode = n1.As<Node<string>>(),
                    endNode = n2.As<Node<string>>(),
                    relationship = rel.As<RelationshipInstance<object>>()
                }).Results;
    

    通过执行startNode和endNode函数,我得到了实际上没有相互连接的额外节点关系

    1 回复  |  直到 7 年前
        1
  •  1
  •   Charlotte Skardon    7 年前

    Return.As 部分 Neo4jClient Optional 你在你的 C#

    var query = client.Cypher.Match("(n1)")
               .Where((Node n1) => n1.Identifier == identifier)
               .OptionalMatch("p=(n1)-[:r1|r2*..2]->(n2)")
               .Unwind("relationships(p)", "rel")
               .ReturnDistinct((n1, rel, n2) => new
               {
                   startNode = Return.As<Node<string>>("startNode(rel)"),
                   endNode = Return.As<Node<string>>("endNode(rel)"),
                   relationship = Return.As<string>("type(rel)")
               });
    

    回来像 允许您调用想要调用的函数。