使用SQL匹配查询OrientDB(2.2.x)时,匹配特定类的所有文档的简单查询无法返回任何结果,而使用'select'语句的看似等效的查询工作正常。
例如,此查询返回0结果:
match {class:ClassA} return $matches
其中,此查询返回我期望的100条记录:
select * from ClassA
在我的数据库中,有100条“ClassA”类型的记录。我可以在Schema Manager中看到ClassA已定义并且有100条与之关联的记录。此外,从管理器中选择“查询全部”会正确返回所有100条记录。我错过了什么?
答案 0 :(得分:1)
return $matches
(相当于return $patterns
)仅返回定义了别名的模式节点的结果。在你的情况下,他们都没有。为了使它工作,你可以
为节点添加别名:
match {class:ClassA, as:a} return $matches
或将$matches
替换为$paths
(也会返回没有别名的节点):
match {class:ClassA} return $paths
答案 1 :(得分:0)
你尝试过这样的事吗?我认为你应该使用select和match来获得正确的数据,match只匹配条件,但是当我们需要属性时,我们需要添加它们以明确选择。
此查询适用于我的会员课程。
select member.firstName, member.lastName, member.email from (MATCH {class: Member, as:member} return member);
好吧,我在OrientDB工作了2天,所以这里可能会有更好的答案。
答案 2 :(得分:0)
如果您不想编写要选择的每个媒体资源,可以执行以下操作:
SELECT expand(classa) FROM (match {class:ClassA, as:classa} return classa)