如何使用java插件在Neo4j中返回节点邻居?
在塞弗,返回的邻居会是这样的:如何使用java插件在Neo4j中返回节点邻居?,neo4j,cypher,neo4j-apoc,neo4j-plugin,Neo4j,Cypher,Neo4j Apoc,Neo4j Plugin,在塞弗,返回的邻居会是这样的: START n=node({nodeId}) MATCH n--m RETURN m; 我很难创建一个同样的Java插件。然后我想看看返回的邻居的财产等等。这是我的代码,我试图从中获取关系及其端点。我做错了什么?我只从“while循环”中返回节点本身,而没有返回任何内容 import java.util.Iterator; 导入java.util.stream.stream; 导入org.neo4j.graphdb.GraphDatabaseService; 导
START n=node({nodeId}) MATCH n--m RETURN m;
我很难创建一个同样的Java插件。然后我想看看返回的邻居的财产等等。这是我的代码,我试图从中获取关系及其端点。我做错了什么?我只从“while循环”中返回节点本身,而没有返回任何内容
import java.util.Iterator;
导入java.util.stream.stream;
导入org.neo4j.graphdb.GraphDatabaseService;
导入org.neo4j.graphdb.Label;
导入org.neo4j.graphdb.Node;
导入org.neo4j.graphdb.Relationship;
导入org.neo4j.graphdb.ResourceIterator;
导入org.neo4j.logging.Log;
导入组织neo4j.程序。*;
导入org.neo4j.procedure.Description;
导入org.neo4j.procedure.Name;
公共类关联{
@上下文
公共图形数据库服务数据库;
@上下文
公共日志;
@UserFunction(value=“boris.getneights”)
@描述(“boris.getneights-一步之遥查找节点”)
公共节点passName2(@Name(“nodeId”)长nodeId)
{
Node Node=db.getNodeById(nodeId);
Iterable rels=node.getRelationships();
迭代器I_rel=rels.Iterator();
while(I_rel.hasNext()){
关系rel=I_rel.next();
Node endNode=rel.getEndNode();
返回端节点;
}
返回节点;
}
}
这项工作:
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();
}
}
}
公共类NodeFinder{
@上下文
公共图形数据库服务数据库;
@上下文
公共日志;
@程序
@说明(“查找一步之外的节点”)
公共流passName2(@Name(“nodeId”)长nodeId)
{
Node Node=db.getNodeById(nodeId);
Iterable rels=node.getRelationships();
Stream relsStream=StreamSupport.Stream(rels.spliterator(),false);
Stream myNodes=relsStream.map(r->new NodeResult(r));
返回myNodes;
}
公共类NodeResult
{
//我的回报
公共节点;
//建造师
公共节点结果(关系项)
{
this.node=item.getEndNode();
}
}
}
这项工作:
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();
}
}
}
公共类NodeFinder{
@上下文
公共图形数据库服务数据库;
@上下文
公共日志;
@程序
@说明(“查找一步之外的节点”)
公共流passName2(@Name(“nodeId”)长nodeId)
{
Node Node=db.getNodeById(nodeId);
Iterable rels=node.getRelationships();
Stream relsStream=StreamSupport.Stream(rels.spliterator(),false);
Stream myNodes=relsStream.map(r->new NodeResult(r));
返回myNodes;
}
公共类NodeResult
{
//我的回报
公共节点;
//建造师
公共节点结果(关系项)
{
this.node=item.getEndNode();
}
}
}