首页 > 解决方案 > 在neo4j中比较两个图有什么简单的方法吗

问题描述

我的后端生成一个包含一个节点的图(我们称之为节点 1),该图如下所示

                    1                (TOPNODE)
                                    /       \
                    2               1        2
                                  /  \
                    3             3   4
                                /     \
                    4           5      6

顶部节点包含图表的生成日期。

之后,所有偶数级别(包含节点 1、2、5 和 6 的级别 2 和级别 4)都包含一个唯一名称和一个值,即。一个电话号码。

所有奇数级别(级别 3 AKA:节点 3 和 4)都包含其父名称和子信息。

在我的服务中,我可以编辑图表的一部分。例如:我可以更改节点中的值(NOT THE NAME)。或者我可以一次删除节点。但是我只能通过生成子图的那部分来访问编辑的信息。

所以我的问题是:我可以将完整的图导入 JAVA,然后仅将该子图与刚刚生成的新子图进行比较,然后创建旧图的新版本但进行更改?

我尝试过的是:将所有图形作为 JSON 拉入 java,并使用它与较小的图形进行比较,这是可行的。但我不知道是否有更有效的方法,或者是否有任何方法可以将 java 中的节点作为实际节点而不是 JSON。要将其转换为 JSON,我执行了以下操作:

     Session session = driver.session();
    String message = "START n=node(*) MATCH (n)-[r]->(m) RETURN n,r,m;";
    StatementResult result = session.run(message);
    while ( result.hasNext() ) {
        Record record = result.next();
        Gson gson = new Gson();
        System.out.println(gson.toJson(record.asMap()));
        String m = gson.toJson(record.asMap().get("n"));
        JSONObject json = new JSONObject(gson.toJson(record.asMap()));
        convert(json,m);
    }
    session.close();

标签: javaeclipseneo4j

解决方案


推荐阅读