在java中的neo4j嵌入式数据库中,我应该如何检查两个节点是否相互关联?

时间:2013-10-20 13:02:16

标签: java neo4j embedded-database java-api

在java中的neo4j嵌入式数据库中,如何检查两个节点是否有相互关系?

我想要语法或教程链接,我看过neo4j网站但没找到它。

感谢。

2 个答案:

答案 0 :(得分:12)

给定两个节点“nodeA”和“nodeB”,

  1. 将所有关系附加到“nodeA”,

    rels = nodeA.getRelationships();
    
  2. 遍历关系“rels”的集合,对于每个关系“rel”,测试另一个端节点是否为nodeB

    rel.getOtherNode(nodeA).equals(nodeB)
    
  3. 如果上述表达式适用于其中一个关系,则nodeA和nodeB连接。

  4. 以下是“Node”和“Relationshiip”的java API,

    http://api.neo4j.org/current/

答案 1 :(得分:0)

private boolean sharedRelationshipExists( Node nodeA, long nodeBId)
{
    Iterator<Relationship> iterator = nodeA.getRelationships().iterator();
    while ( iterator.hasNext() )
    {
        if (iterator.next().getOtherNode( nodeA ).getId() == nodeBId) return true;
    }
    return false;
}

// in another part
boolean sharedRelationshipBetweenAB;
if ( nodeA.getDegree() < nodeB.getDegree() )
{
    sharedRelationshipBetweenAB = sharedRelationshipExists( nodeA, nodeB.getId() );
}
else
{
    sharedRelationshipBetweenAB = sharedRelationshipExists( nodeB, nodeA.getId() );
}

布尔sharedRelationshipBetweenAB将保留您的答案