ArangoDb中web界面的可视化未按预期工作

ArangoDb中web界面的可视化未按预期工作,arangodb,Arangodb,我正在测试ArangoDb是否使用框架提供的图形功能 我试图创建一个非常简单的图,如下所示,类似于这里提供的Java驱动程序示例 我试图在web界面中可视化这个图形。图形可视化显示了一些我不理解的奇怪行为。在上面的设置中,我希望图中有四个节点,边在荷马-玛吉和巴特-丽莎之间,但我只看到两个节点和一条边,即荷马-玛吉 可视化视图本身有时会显示没有节点,在重新访问同一页面时会出现节点。图形查看器以随机顶点开始。这意味着无论何时打开,它都可能使用完全不同的起始顶点 这是因为在一般情况下,图形可以包含多

我正在测试ArangoDb是否使用框架提供的图形功能

我试图创建一个非常简单的图,如下所示,类似于这里提供的Java驱动程序示例

我试图在web界面中可视化这个图形。图形可视化显示了一些我不理解的奇怪行为。在上面的设置中,我希望图中有四个节点,边在荷马-玛吉和巴特-丽莎之间,但我只看到两个节点和一条边,即荷马-玛吉


可视化视图本身有时会显示没有节点,在重新访问同一页面时会出现节点。

图形查看器以随机顶点开始。这意味着无论何时打开,它都可能使用完全不同的起始顶点

这是因为在一般情况下,图形可以包含多个顶点,而不能同时显示所有顶点,因为渲染可能需要很长时间,甚至会使浏览器崩溃。要在开始时将哪个顶点放在显示的中心也不是很容易确定的,因为这需要图形查看器知道哪个顶点比其他顶点更重要,或者对用户来说最重要。因为它不知道,所以存在随机开始顶点选择

通过单击图形查看器右上角的过滤器图标,可以选择不同的起点/中心顶点。这将打开一个搜索输入字段,您可以使用该字段通过任何属性选择开始顶点,例如,如果顶点包含名称属性,则名称==Homer

如果存在这样的顶点,它将与其所有直接连接的顶点一起放在屏幕的中心。请注意,仅显示从起始顶点到其直接连接顶点的关系/边。默认情况下,间接连接不会显示在图形查看器中。单击所显示的任何顶点都将展开或收缩它们,并可能产生进一步的关系


同样,所有这些都完成了,因为可能无法在开始时显示整个图形—想象一个有几百万个节点的图形。但正如您的问题所表明的,当前的解决方案可能并不直观。

图形查看器从一个随机顶点开始。这意味着无论何时打开,它都可能使用完全不同的起始顶点

这是因为在一般情况下,图形可以包含多个顶点,而不能同时显示所有顶点,因为渲染可能需要很长时间,甚至会使浏览器崩溃。要在开始时将哪个顶点放在显示的中心也不是很容易确定的,因为这需要图形查看器知道哪个顶点比其他顶点更重要,或者对用户来说最重要。因为它不知道,所以存在随机开始顶点选择

通过单击图形查看器右上角的过滤器图标,可以选择不同的起点/中心顶点。这将打开一个搜索输入字段,您可以使用该字段通过任何属性选择开始顶点,例如,如果顶点包含名称属性,则名称==Homer

如果存在这样的顶点,它将与其所有直接连接的顶点一起放在屏幕的中心。请注意,仅显示从起始顶点到其直接连接顶点的关系/边。默认情况下,间接连接不会显示在图形查看器中。单击所显示的任何顶点都将展开或收缩它们,并可能产生进一步的关系


同样,所有这些都完成了,因为可能无法在开始时显示整个图形—想象一个有几百万个节点的图形。但是,正如您的问题所表明的,当前的解决方案可能不直观。

谢谢您的回答,我现在更了解工作流程了。我希望在这种情况下保持一致性,在这种情况下,重新访问graph选项卡不会改变我以前在我的案例中看到的节点和边,有时会显示在重新访问graph选项卡时根本没有要显示的节点。我还认为当前的行为可能有点混乱。我已经提议更改graph viewer的行为,但是,我不知道这将如何适应计划。更新:ArangoDB 2.6中的graph viewer已通过几种方式进行了修改:首先,它现在将向用户明确,它将只显示图形的一小部分,其次,如果图形非常小,它将完全显示它。2.6即将发布。感谢您的回复,我现在更了解工作流程了。我希望在这种情况下保持一致性,在这种情况下,重新访问graph选项卡不会改变我以前在我的案例中看到的节点和边,有时会显示在重新访问graph选项卡时根本没有要显示的节点。我还认为当前的行为可能有点混乱。我已经提议更改graph viewer的行为,但是,我不知道这将如何适应计划。更新:Arango中的graph viewer DB2.6已经在几个方面进行了修改:首先,它现在将向用户明确它将只显示图形的一小部分,其次,如果图形非常小,它将完全显示它。2.6将很快发布。
    List<EdgeDefinitionEntity> edgeDefinitions = new ArrayList<EdgeDefinitionEntity>();
    EdgeDefinitionEntity edgeDefinition = new EdgeDefinitionEntity();

    edgeDefinition.setCollection("myEdgeCollection");
    List<String> from = new ArrayList<String>();
    from.add("myCollection1");
    edgeDefinition.setFrom(from);

    List<String> to = new ArrayList<String>();
    to.add("myCollection2");
    edgeDefinition.setTo(to);


    edgeDefinitions.add(edgeDefinition);

    GraphEntity graph = arangoDriver.createGraph("myGraph",
            edgeDefinitions, null, true);


    User myObject1 = new User("Homer", 38);
    User myObject2 = new User("Bart", 36);

    User myObject3 = new User("Marge", 39);
    User myObject4 = new User("Lisa", 40);

    DocumentEntity<User> vertexFrom1 = arangoDriver.graphCreateVertex(
            "myGraph", "myCollection1", myObject1, true);
    DocumentEntity<User> vertexFrom2 = arangoDriver.graphCreateVertex(
            "myGraph", "myCollection1", myObject2, true);

    DocumentEntity<User> vertexTo1 = arangoDriver.graphCreateVertex(
            "myGraph", "myCollection2", myObject3, true);

    DocumentEntity<User> vertexTo2 = arangoDriver.graphCreateVertex(
            "myGraph", "myCollection2", myObject4, true);

    EdgeEntity<?> edge1 = arangoDriver.graphCreateEdge("myGraph",
            "myEdgeCollection", null, vertexFrom1.getDocumentHandle(),
            vertexTo1.getDocumentHandle(), null, null);
    EdgeEntity<?> edge2 = arangoDriver.graphCreateEdge("myGraph",
            "myEdgeCollection", null, vertexFrom2.getDocumentHandle(),
            vertexTo2.getDocumentHandle(), null, null);
{"_from":"myCollection1/1544266710","_to":"myCollection2/1544987606"}
{"_from":"myCollection1/1544528854","_to":"myCollection2/1545249750"}