如何解释 orientjs 查询结果?



我正在使用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 是边缘。这是对的吗?还是我在解释查询结果时缺少什么?

在Orientjs的GitHub上得到一些帮助(见这里(之后,我得到了答案。

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

最新更新