OrientDB 2.1.3:遍历带约束的边

阿尔贝托

我已经发现的怪异的行为in( )out( )TRAVERSE与约束边工作时。给定以下数据库:

CREATE CLASS Employee EXTENDS V;
CREATE PROPERTY Employee.nt_account String;

CREATE CLASS ManagedBy EXTENDS E;
CREATE PROPERTY ManagedBy.out LINK Employee;
CREATE PROPERTY ManagedBy.In LINK Employee;

CREATE INDEX Employee.nt_account unique_hash_index;

CREATE VERTEX Employee SET nt_account = 'e0';
CREATE VERTEX Employee SET nt_account = 'e1';
CREATE VERTEX Employee SET nt_account = 'e2';

CREATE EDGE ManagedBy FROM (SELECT FROM Employee WHERE nt_account = 'e0') TO (SELECT FROM Employee WHERE nt_account = 'e1');
CREATE EDGE ManagedBy FROM (SELECT FROM Employee WHERE nt_account = 'e1') TO (SELECT FROM Employee WHERE nt_account = 'e2');
CREATE EDGE ManagedBy FROM (SELECT FROM Employee WHERE nt_account = 'e2') TO (SELECT FROM Employee WHERE nt_account = 'e0');

运行类似于此答案中的查询的查询

TRAVERSE out('ManagedBy') FROM (SELECT FROM Employee where nt_account = 'e0')

仅返回一条记录:的条目e0如果我SELECT用e0的RID替换子查询,问题仍然存在选择时也会发生类似的情况out('ManagedBy')有趣的是,数据库中具有相同结构但没有约束的相同查询ManagedBy返回正确的结果。

有人知道我的代码有什么问题吗?(或者,我是否发现了错误?)

此外,有人知道我如何编写可检测图中循环的OSQL查询吗?在Cypher中,我会写

MATCH p=(e: Employee)-[:MANAGED_BY*]->(e)
RETURN p

对于问题的第一部分,我从@ wolf4ood和@LucaS都获得了很好的建议。我将第一个答案标记为正确(FCFS),但我认为第二个答案也有效。至于查询,我自己解决了:

SELECT out.nt_account, shortestPath(in, out, 'OUT').nt_account 
FROM ManagedBy

看起来很琐碎,我花了一些时间来编写它。我使用的技巧是直接在边缘上进行迭代,并检查是否存在从目标节点到源节点的最短路径。

狼4ood

默认情况下,属性区分大小写

http://orientdb.com/docs/2.1/SQL-Alter-Property.html

创建财产

CREATE PROPERTY ManagedBy.In LINK Employee;

traverse命令期望使用in属性。因此,遍历过程仅返回起始节点。

更改此语句

CREATE PROPERTY ManagedBy.in LINK Employee;

它会工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Waterline-OrientDB-双向边

来自分类Dev

多个顶点之间的OrientDb边

来自分类Dev

如何遍历多个OrientDB顶点

来自分类Dev

在边缘后停止遍历(orientdb)

来自分类Dev

在OrientDb中查找和删除重复的边

来自分类Dev

OrientDB中的重复顶点和边

来自分类Dev

OrientDB-遍历示例-BREADTH_FIRST

来自分类Dev

在OrientDB遍历中使用maxdepth和while

来自分类Dev

OrientDB-来自2个不同表的结果

来自分类Dev

Orientdb-具有多个边的where子句

来自分类Dev

如何在OrientDB中按边数对顶点排序

来自分类Dev

Orientdb-带有多个边的where子句

来自分类Dev

如何在Bash中遍历参数($ 1 $ 2 $ 3等)?

来自分类Dev

如何在Bash中遍历参数($ 1 $ 2 $ 3等)?

来自分类Dev

REGEXP 约束在orientdb 中有效吗?

来自分类Dev

orientdb-如何过滤没有遍历的子顶点

来自分类Dev

将2M记录导入OrientDB后,Java OutOfMemoryError / OrientDB WAL刷新任务错误

来自分类Dev

获取旧数字的整数总和 1 + (1 + 2) + (1 + 2 + 3) + ... + (1 + 2 + 3 + ... + n)

来自分类Dev

标尺函数的迭代实现(1,2,1,3,1,2,1,4,1,2,1,3,...)

来自分类Dev

Silverstripe OrientDB

来自分类Dev

OrientDB OR评估

来自分类Dev

(((1 2)3)与((1 2)。3)相同吗?

来自分类Dev

(((1 2)3)与((1 2)。3)相同吗?

来自分类Dev

如何在R中将数据1 1 2 2 3 3拆分为1 2 3 1 2 3?

来自分类Dev

MATLAB - 重复行 n 次(从 A=[1;2;3] 创建 B=[1;2;3;1;2;3;1;2;3])

来自分类Dev

在 sql 中将值从 ('1,2,3') 拆分为 ('1','2','3') 或 (1,2,3)

来自分类Dev

如何以可编程方式更改OrientDB 2.0-rc2中的密码?

来自分类Dev

如何以可编程方式更改OrientDB 2.0-rc2中的密码?

来自分类Dev

从RDBMS DB2导入到文档数据库OrientDB

Related 相关文章

热门标签

归档