我有以下结构
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 " );
第一个节点通过关系“电子邮件”链接到第二个和第三个节点。类似地,第二个节点连接到第三、第四、第一。
我想要每个节点输出类似这样的内容: secondaryNode=[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 "}
我对密码很陌生。如何为此编写匹配语句?这可能吗?
最佳答案
- 您的标签应类似于 :Person not :A, :B, :C
- 您希望通过第一个节点进行聚合。
- 您应该使用大写重新输入
尝试这样的事情:
MATCH (sender:Person)-[:EMAILS]->(receiver)
RETURN sender,collect(receiver) as receivers
关于java - java中的Neo4j Cypher match()。查找连接的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34677104/