【问题标题】:How to return node neighbours in Neo4j using java plugin?如何使用 java 插件在 Neo4j 中返回节点邻居?
【发布时间】:2017-07-19 13:47:57
【问题描述】:

在 Cypher 中返回的邻居看起来像这样:

START n=node({nodeId}) MATCH n--m RETURN m;

我很难创建一个具有相同功能的 Java 插件。之后我想查看返回的邻居的属性等等。这是我尝试获取关系及其 EndNode 的代码。我究竟做错了什么?我只返回节点本身,但没有从“while-Loop”返回。

import java.util.Iterator;
import java.util.stream.Stream;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Label;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.ResourceIterator;
import org.neo4j.logging.Log;
import org.neo4j.procedure.*;
import org.neo4j.procedure.Description;
import org.neo4j.procedure.Name;

public class Correlation {

@Context
public GraphDatabaseService db;

@Context
public Log log;


@UserFunction(value = "boris.getNeighbours")
@Description("boris.getNeighbours- finds Nodes one step away")
public Node passName2(@Name("nodeId") long nodeId)

{

    Node node = db.getNodeById( nodeId );
    Iterable<Relationship> rels = node.getRelationships();
    Iterator<Relationship> I_rel =  rels.iterator();

    while (I_rel.hasNext()) {
        Relationship rel = I_rel.next();
        Node endNode = rel.getEndNode();
        return endNode;
    }
return node;
}
}

【问题讨论】:

    标签: neo4j cypher neo4j-apoc neo4j-plugin


    【解决方案1】:

    这行得通:

    public class NodeFinder {
    
    @Context
    public GraphDatabaseService db;
    
    @Context
    public Log log;
    
    @Procedure 
    @Description("finds Nodes one step away")
    public Stream<NodeResult> passName2(@Name("nodeId") long nodeId)
    
    {
    
        Node node = db.getNodeById(nodeId);
        Iterable<Relationship> rels = node.getRelationships();
        Stream<Relationship> relsStream = StreamSupport.stream(rels.spliterator(), false);
        Stream<NodeResult> myNodes = relsStream.map(r -> new NodeResult(r));  
    
        return myNodes;
    
    }
    
    
    public class NodeResult 
    {
        //What i return
        public Node node;
    
         //Constructor
         public NodeResult(Relationship item) 
         {            
            this.node = item.getEndNode();
         }
    
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多