在OrientDB中查询链接顶点

在OrientDB中查询链接顶点,orientdb,Orientdb,我试图查询链接到我正在查询的顶点(a)的顶点(B)。我尝试了下面的查询,但它返回的是链接顶点(B),而不是我选择的顶点(A) select expand(out(A)[title='xyz']) from A 这将返回B中的所有顶点。我需要知道这如何符合where子句。我创建此结构是为了尝试您的情况: 我有以下选项来获得您想要的结果: 查询1: select from A where out(E)[title='xyz'].size() > 0 ----+-----+------+-

我试图查询链接到我正在查询的顶点(a)的顶点(B)。我尝试了下面的查询,但它返回的是链接顶点(B),而不是我选择的顶点(A)

select expand(out(A)[title='xyz']) from A

这将返回B中的所有顶点。我需要知道这如何符合where子句。

我创建此结构是为了尝试您的情况:

我有以下选项来获得您想要的结果:

查询1

select from A where out(E)[title='xyz'].size() > 0
----+-----+------+-----+--------
#   |@RID |@CLASS|title|out_
----+-----+------+-----+--------
0   |#12:0|A     |abc  |[size=3]
----+-----+------+-----+--------
select from A where out(E).title contains 'xyz'
----+-----+------+-----+--------
#   |@RID |@CLASS|title|out_
----+-----+------+-----+--------
0   |#12:0|A     |abc  |[size=3]
----+-----+------+-----+--------
输出

select from A where out(E)[title='xyz'].size() > 0
----+-----+------+-----+--------
#   |@RID |@CLASS|title|out_
----+-----+------+-----+--------
0   |#12:0|A     |abc  |[size=3]
----+-----+------+-----+--------
select from A where out(E).title contains 'xyz'
----+-----+------+-----+--------
#   |@RID |@CLASS|title|out_
----+-----+------+-----+--------
0   |#12:0|A     |abc  |[size=3]
----+-----+------+-----+--------
查询2

select from A where out(E)[title='xyz'].size() > 0
----+-----+------+-----+--------
#   |@RID |@CLASS|title|out_
----+-----+------+-----+--------
0   |#12:0|A     |abc  |[size=3]
----+-----+------+-----+--------
select from A where out(E).title contains 'xyz'
----+-----+------+-----+--------
#   |@RID |@CLASS|title|out_
----+-----+------+-----+--------
0   |#12:0|A     |abc  |[size=3]
----+-----+------+-----+--------
输出

select from A where out(E)[title='xyz'].size() > 0
----+-----+------+-----+--------
#   |@RID |@CLASS|title|out_
----+-----+------+-----+--------
0   |#12:0|A     |abc  |[size=3]
----+-----+------+-----+--------
select from A where out(E).title contains 'xyz'
----+-----+------+-----+--------
#   |@RID |@CLASS|title|out_
----+-----+------+-----+--------
0   |#12:0|A     |abc  |[size=3]
----+-----+------+-----+--------

希望它有帮助

除了更直接之外,下面的内容通常不是比从一开始就更有效吗

select in(E) from (select from B where title='xyz') unwind in

嗨,你的结构怎么样?如下所示:
A(class)---unnamedge-->B(class)
?如果您的结构是A(class)---unnamedge-->B(class),则可以使用where out(“unnamedge”)。标题包含“xyz”@Alessandrororota:您的查询按原样工作,但不能使用“=”。有没有办法让它精确?@user3295878 out(“unNamedEdge”)返回一个列表,所以你必须使用“包含”而不是“=”@Alessandrororota基本问题是,与精确匹配相比,包含过滤器不是很昂贵吗?我不知道OrientDB的确切工作原理,只是好奇而已。如果你能解释清楚我会很高兴的。谢谢你尝试一下。但是,我需要查看类A的值,而在上面的输出中,类显示为B,这就是为什么我想使用where子句。正如我在评论中提到的,where子句起作用,但仅适用于包含条件的对象。我需要一个精确的匹配。你能帮我吗?对不起,我错了。我刚刚用正确的内容替换了我的答案。第二个查询成功了,输出是预期的。谢天谢地,它在下一个链接顶点上也起了作用。例如,从where out(E1)中选择。out(E2)。标题包含“xyz”。我可以像这样持续链接多久,直到它开始影响数据库性能?嗨,很难说,这还取决于数据库有多少记录(和其他变量)。如果是这种情况,可以实现多个查询以提高性能,例如不同级别的子查询和/或特定条件。