ArangoDB:通过图遍历聚合计数

在我的ArangoDB图中,我有一个主题,与该主题相关联的消息线程,以及这些消息线程内的消息.我想以这样一种方式遍历图形,即返回与消息线程关联的数据以及消息线程内的消息计数.

数据的结构非常简单:我有主题节点,边缘扩展到线程节点,日期和类别相关联,以及从线程节点到消息节点的边缘.

我想返回存储在线程节点中的数据和附加到线程的消息计数.

我不知道如何用1,2出站语法中的for v,e,p来做到这一点.我应该只为其中的v,p做嵌套图吗?这仍然是高性能的吗?

对不起,我们正在努力3.1版;)

我认为你已经在正确的解决方案:
在1..2 OUTBOUND语句中表达您想要实现的内容并不容易.
在两个1..1 OUTBOUND语句中表达更容易.

根据您的解释,我认为以下查询是您将使用的:

FOR thread IN 1 OUTBOUND @start @@threadEdges
  LET nr = COUNT(FOR message IN 1 OUTBOUND thread @@messageEdges RETURN 1)
  RETURN {
    date: thread.date,category: thread.category,messages: nr
  }

对于一些解释:我首先选择相关的线程.
接下来我做一个子查询,只需要一个线程的消息.
最后,我返回了我需要的信息.

在表现方面:在数据访问方面(最有可能是“瓶颈”操作),FOR x IN 1..2 OUTBOUND […]和FOR x IN 1 OUTBOUND […] for y in 1 OUTBOUND没有区别x […]都必须查看完全相同的文档.在后一种情况下,查询优化可能会稍慢,但差异低于1ms.

相关文章

适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以相互合作。
策略模式定义了一系列算法族,并封装在类中,它们之间可以互相替换,此模式让算法的变化独立于使用算法...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,它是针对软件开发中经常遇到的一些设计问题...
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以在不改变算法结...
迭代器模式提供了一种方法,用于遍历集合对象中的元素,而又不暴露其内部的细节。
外观模式又叫门面模式,它提供了一个统一的(高层)接口,用来访问子系统中的一群接口,使得子系统更容...