根据来自不同类的值从V类中选择Top 50

时间:2017-10-09 15:21:33

标签: orientdb

我正在做一个概念验证。我有一个“ArticleRead”V类,它具有非唯一属性“JournalTitle”(每个日志的大量读取),“Product”V类具有“Subject”的非唯一属性,并且它们之间的边缘带有一个名为“类型”。

ArticleRead为我们系统的用户读取的每篇文章插入了一个顶点。

任何人都可以提供一个近似的SQL来查找特定主题的前50个阅读期刊标题吗?在我们当前的RDBMS中,我们必须找到具有该主题的产品,然后按照这些产品的journalTitle计算所有articleReads,然后获得前50名。它需要几个生命周期。

此外,任何关于修改边缘或任何欢迎的建议(这是我们在极少的自我训练后玩的概念证明)。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

 SELECT FROM ( 
   SELECT JournalTitle, count(*) as count FROM (
     SELECT expand(out()) FROM Product WHERE Subject = ?
   ) GROUP BY JournalTitle
 ) ORDER BY count LIMIT 50

SELECT FROM (
   SELECT JournalTitle, count(*) as count
   FROM ArticleRead
   WHERE in()[0].Subject = ?
) ORDER BY count LIMIT 50

仅仅为了记录,对于这样的操作(单级遍历和聚合),图形数据库与关系数据库相比的优势通常不大: