何时使用 expand() and/or 子选择

When to use expand() and/or sub-selects

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

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'

非常感谢您的帮助!

因为where条件在前2种情况下没有很好的应用。 第一个out()returns只是一个记录id的集合, 对于第二个,数组在文档集合中被扩展和转换,但我认为 where 条件在扩展之前应用,所以像案例 1 不起作用。

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

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