1

我通过使用Orientjs查询我的 OrientDB 实例,然后从查询中提取所需的数据并将其传递给 cytoscape.js,从而在我的网页中创建一个交互式图表。我能够从 OrientDB 实例中获取数据并将其绘制成图表,但我意识到在 OrientDB Studio 中运行查询的结果与通过 Orientjs 运行查询时的结果不同。在 Studio 中,我从查询中得到 20 个节点和 67 条边。当我通过 Orientjs 运行相同的查询时,我得到了 65 个单独的对象。最初我认为每个对象都代表一个节点,而“in_links”/“out_links”是边缘。然而,显然情况并非如此。

所以我认为这是 3 个问题中的 1 个:

  1. Orientjs 只是不工作,并给我返回坏数据(我认为并希望这不太可能)。
  2. 我以某种方式在 OrientDB 的两个不同实例上运行查询(我很确定这是不可能的)。
  3. 我没有正确解释来自 Orientjs 的查询结果,因此没有正确地将它们输入到 cytoscape.js 中(我认为这很可能是问题所在)。

以下是我从查询中返回的对象的一些示例:

{
    "@class": "<class_name>",
    "@type": "d",
    "Cluster_ID": 8,
    "@rid": "#25:5",
    "@version": 1
},
{
    "@class": "<class_name>",
    "@type": "d",
    "out_links": [
        "#33:65",
        "#34:65",
        "#35:65",
        "#36:65",
        "#33:67",
        "#34:67",
        "#35:67",
        "#36:67",
        "#33:69",
        "#34:69",
        "#35:69",
        "#36:69",
        "#33:71",
        "#34:71",
        "#35:71",
        "#36:71",
        "#36:127",
        "#37:126",
        "#38:126",
        "#39:126",
        "#40:126",
        "#37:130",
        "#38:129",
        "#39:129",
        "#40:129",
        "#33:130",
        "#38:133",
        "#39:132",
        "#40:132",
        "#33:133",
        "#34:133",
        "#39:136",
        "#40:135",
        "#33:136",
        "#34:136",
        "#35:136"
    ],
    "Cluster_ID": 0,
    "@rid": "#25:6",
    "@version": 9
},
{
    "@class": "<class_name>",
    "@type": "d",
    "Cluster_ID": 8,
    "@rid": "#25:7",
    "@version": 1
},
{
    "@class": "<class_name>",
    "@type": "d",
    "out_links": [
        "#36:112",
        "#37:112",
        "#38:112",
        "#39:112",
        "#40:111",
        "#37:115",
        "#38:115",
        "#39:115",
        "#40:115",
        "#33:115"
    ],
    "in_links": [
        "#38:95",
        "#35:94",
        "#40:94",
        "#37:93",
        "#34:93",
        "#33:105",
        "#38:103",
        "#35:104",
        "#40:102",
        "#37:102"
    ],
    "Cluster_ID": 3,
    "@rid": "#25:8",
    "@version": 5
}

就像我提到的,我认为这些中的每一个都代表一个节点,而 in/out_links 是边缘。这个对吗?还是我在解释查询结果时遗漏了什么?

4

1 回答 1

1

在 Orientjs 的 GitHub 上的一些人的帮助下(见这里)我得到了答案。

在 OrientDB studio 上运行查询时LIMIT 20,每个查询都会隐式添加,除非指定了限制。我返回并指定了 100 的限制,果然我渲染的​​节点数量与 Orientjs 查询中的对象数量相同。从那里确认边缘的数量。所以上面对 Orientjs 查询结果的含义的描述是正确的:每个对象都是一个节点,而 in/out_links 是边。边的关键是,如果一个顶点的 in_link 和另一个顶点的 out_link 中存在相同的 ID,则这两个顶点由该边连接。

于 2019-12-13T13:23:31.980 回答