Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取所有节点';使用Java连接器Jar在neo4j中创建关系_Neo4j_Cypher_Neo4j Java Api - Fatal编程技术网

如何获取所有节点';使用Java连接器Jar在neo4j中创建关系

如何获取所有节点';使用Java连接器Jar在neo4j中创建关系,neo4j,cypher,neo4j-java-api,Neo4j,Cypher,Neo4j Java Api,这是我的图表 我试图用java代码获得节点及其关系的详细信息,下面是我的代码。我能够获得节点的详细信息,但无法获得关系。java文档没有允许公开关系的信息和方法 我的代码 import java.util.List; import org.neo4j.driver.AuthTokens; import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; import org.neo4j.driver.Record; i

这是我的图表

我试图用java代码获得节点及其关系的详细信息,下面是我的代码。我能够获得节点的详细信息,但无法获得关系。java文档没有允许公开关系的信息和方法

我的代码

import java.util.List;
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.neo4j.driver.Record;
import org.neo4j.driver.Result;
import org.neo4j.driver.Session;
import org.neo4j.driver.Value;
import org.neo4j.driver.internal.InternalResult;

public class Neo4jTest {

    private Driver driver;

    public Neo4jTest() {
        loadDriver();
    }

    private void loadDriver() {
        driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "Test"));
    }

    public Result createNodes(String query) {
        try (Session session = driver.session())
        {
            InternalResult result = (InternalResult) session.writeTransaction(tx -> tx.run(query));
            return result;
        }
    }

    public List<Record> execute(String query) {
        try (Session session = driver.session())
        {
            Result result = session.run(query);
            return result.list();
        }
    }

    public void cleanUp(String object) {
        String cleanUpQuery = "match(n:" + object +") detach delete n";
        execute(cleanUpQuery);
    }

    public void printResults(List<Record> results) {
        for (Record record : results) {
            Value rec = record.get("n");
            System.out.print("Record --> [");
            for (String key : rec.keys()) {
                System.out.print(key + " : " + rec.get(key) + ", ");
            }
            System.out.println("]");

            //TODO: Need to get all Relationship of this particular node
        }
    }

    public static void main(String[] args) {

        String createQuery = "create \n" + 
                "(a:People {name : \"Vivek\", age : 20}), \n" + 
                "(b:People {name : \"Abdul\", age : 25}), \n" + 
                "(c:People {name : \"John\", age : 22}),\n" + 
                "" +
                "(a)-[:KNOWS]->(b),\n" + 
                "(b)-[:FRIEND_OF]->(c),\n" + 
                "(c)-[:KNOWS]->(a)";

        String fetchQuery = "match(n:People) return n";

        Neo4jTest obj = new Neo4jTest();
        obj.cleanUp("People");

        // Create Nodes
        obj.createNodes(createQuery);

        // Fetch Nodes
        List<Record> results = obj.execute(fetchQuery);

        // Process Results
        obj.printResults(results);

    }
}
JavaDoc链接->

相关结果对象

org.neo4j.driver.Record;
org.neo4j.driver.Value;
其他详细信息

org.neo4j.driver.Record;
org.neo4j.driver.Value;
Neo4j社区版-3.5.14

Neo4j Java驱动程序版本-4.0.0

更新

(有关答案)

第一个查询不会将关系作为r变量的一部分返回。

[Update]和第二个查询也不返回关系

neo4j浏览器中的结果和代码相同

查询输出

将(n:People)与COLLECT(n)作为节点匹配(:People)-[r]->(:People)与节点匹配,将COLLECT(TYPE(r))作为rels返回节点,rels

谢谢你的帮助

[更新]

当前的
fetchQuery
仅请求和返回节点

您可以改为使用它(并对
打印结果
进行适当更改):

或者,您可以使用它(它为
人员
节点及其之间的关系返回单独的列表,但效率较低):

顺便说一句,
People
实际上应该是
Person
,因为每个节点只能容纳一个人

[增编]

要查看每个关系的类型和结束节点,请执行以下操作:

String fetchQuery =
  "MATCH (a:People)-[r]->(b:People) " +
  "RETURN TYPE(r) AS type_r, a, b";
[更新]

当前的
fetchQuery
仅请求和返回节点

您可以改为使用它(并对
打印结果
进行适当更改):

或者,您可以使用它(它为
人员
节点及其之间的关系返回单独的列表,但效率较低):

顺便说一句,
People
实际上应该是
Person
,因为每个节点只能容纳一个人

[增编]

要查看每个关系的类型和结束节点,请执行以下操作:

String fetchQuery =
  "MATCH (a:People)-[r]->(b:People) " +
  "RETURN TYPE(r) AS type_r, a, b";

谢谢你的提示。不幸的是,上述方法不起作用。请检查我的更新部分,并提供更多信息。修复了我的代码。使用的第二个
需要传递
节点
,否则它将被解除绑定。嗨,cybersam,第二个查询现在运行,但不返回关系,请检查更新。查询正在返回关系(这就是为什么
rels
显示多个映射),但您的关系没有属性(因此映射为空)。例如,您可以使用
COLLECT(TYPE(r))
而不是
COLLECT(r)
来查看关系类型。也可以向关系中添加属性。COLLECT(TYPE(r))->集体返回所有关系,而不是单个节点的关系。请查看更新的图片谢谢你的提示。不幸的是,上述方法不起作用。请检查我的更新部分,并提供更多信息。修复了我的代码。使用
的第二个
需要传递
节点
,否则它将被解除绑定。嗨,cybersam,第二个查询现在运行,但不返回关系,请检查更新。查询正在返回关系(这就是为什么
rels
显示多个映射),但您的关系没有属性(因此映射为空)。例如,您可以使用
COLLECT(TYPE(r))
而不是
COLLECT(r)
来查看关系类型。也可以向关系中添加属性。COLLECT(TYPE(r))->集体返回所有关系,而不是单个节点的关系。请检查更新的图像
String fetchQuery =
  "MATCH (a:People)-[r]->(b:People) " +
  "RETURN TYPE(r) AS type_r, a, b";