小编Rot*_*mon的帖子

OrientDB SQL - 在保持边缘权重的同时进行遍历

让我们假设OrientDB图中的以下模型:

我有一个Profile顶点.配置文件与2个边连接:喜欢评论.两个边都有一个" "字段,表示动作的计数(或边缘的"权重").

因此,如果用户A在用户B的帖子上评论了3次,则会有一个从用户A到用户B 的评论边缘,其值为3.

现在,假设我希望获得与用户B交互的所有用户(喜欢或评论),按交互的权重排序.我可以使用以下SQL执行此操作:

select * from (traverse out from   
(select out, sum(value) as value from    
(traverse * from (select from Profile where username="B") while $depth < 3)    
where @class="Liked" or @class="Commented" group by out order by value desc)   
while $depth < 2  ) where @class="Profile" )
Run Code Online (Sandbox Code Playgroud)

但是,如果我也想知道互动的重量呢?在进行最后一次遍历时如何传播"值"?

编辑

根据该建议,此查询的简化版本将是:

select expand(out) from (    
    select out, sum(value) as value from (    
       select expand(inE("Liked", "Commented")) from Profile 
           where username="B"    
    ) …
Run Code Online (Sandbox Code Playgroud)

orientdb

5
推荐指数
1
解决办法
4639
查看次数

标签 统计

orientdb ×1