本文介绍了Neo4j Java中的Cypher match().查找连接的节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有下面的结构

        firstNode = graphDb.createNode();
        firstNode.setProperty( "person", "Andy " ); 
        Label myLabel = DynamicLabel.label("A");
        firstNode.addLabel(myLabel);
        secondNode = graphDb.createNode();
        secondNode.setProperty( "person", "Bobby" );
        Label myLabel1 = DynamicLabel.label("B");
        secondNode.addLabel(myLabel1);
        ThirdNode = graphDb.createNode();
        ThirdNode.setProperty( "person", "Chris " );
        Label myLabel2 = DynamicLabel.label("C");
        ThirdNode.addLabel(myLabel2);....

        relationship = firstNode.createRelationshipTo( secondNode, RelTypes.emails );
        relationship.setProperty( "relationship", "email " );
        relationship = firstNode.createRelationshipTo( ThirdNode, RelTypes.emails );
        relationship.setProperty( "relationship", "email " );
        relationship = secondNode.createRelationshipTo( ThirdNode, RelTypes.emails );
        relationship.setProperty( "relationship", "email " );
        relationship = secondNode.createRelationshipTo( FourthNode, RelTypes.emails );
        relationship.setProperty( "relationship", "email " );

firstNode通过关系电子邮件"链接到第二和第三.类似地,第二节点连接到第三,第四,第一.

firstNode is linked to second and third by the relation "emails". Similarly, second node is connected to third, fourth, first.

我想要为每个节点输出类似以下内容:secondNode = [firstNode,FouthNode,ThirdNode],firstNode = [second,third],third = ...

I want for each node output somethinglike this: secondNode=[firstNode, FouthNode, ThirdNode], firstNode=[second, third], third=...

我尝试过这样的事情:

try{
        ExecutionEngine engine = new ExecutionEngine(graphDb);
        ExecutionResult result = engine.execute("MATCH (secondNode{person:'Bobby'})<-[:emails]-(node)RETURN node");

        System.out.println(result.dumpToString());
        tx1.success();
    } 

我得到了输出:Node[0]{person:"Andy "}

我对cypher很陌生.如何为此编写匹配语句?这可能吗?

Im am very new to cypher. How to write match statement for this? Is this possible?

推荐答案

  • 您的标签应类似于:Person而不是:A,:B,:C
  • 您要按第一个节点进行聚合.
  • 您应该使用大写重新输入
  • 尝试这样的事情:

    MATCH (sender:Person)-[:EMAILS]->(receiver) 
    RETURN sender,collect(receiver) as receivers
    

    这篇关于Neo4j Java中的Cypher match().查找连接的节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-17 06:06