何时使用expand()和/或子选择

时间:2015-02-09 05:28:30

标签: orientdb

如果有人可以向我解释以下三个查询之间的区别以及为什么只有最后一个查询有效,我将不胜感激。

select out() from #1:0 where @class instanceof 'BaseClass'
select expand(out()) from #1:0 where @class instanceof 'BaseClass'
select from (select expand(out()) from #1:0) where @class instanceof 'BaseClass'

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:5)

因为在前两种情况下,where条件不适用。 第一个out()只返回记录id的集合, 使用第二个数组,数组在文档集合中进行扩展和转换,但我认为在扩展之前应用where条件,因此情况1不起作用。

如果您不想使用子查询,可以随时使用

select expand(out()[ @class = 'BaseClass']) from #1:0