OrientDB匹配{class}不返回任何结果

时间:2016-10-13 20:03:20

标签: match orientdb orientdb2.2

使用SQL匹配查询OrientDB(2.2.x)时,匹配特定类的所有文档的简单查询无法返回任何结果,而使用'select'语句的看似等效的查询工作正常。

例如,

此查询返回0结果:

match {class:ClassA} return $matches

其中,此查询返回我期望的100条记录:

select * from ClassA

在我的数据库中,有100条“ClassA”类型的记录。我可以在Schema Manager中看到ClassA已定义并且有100条与之关联的记录。此外,从管理器中选择“查询全部”会正确返回所有100条记录。我错过了什么?

3 个答案:

答案 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)