max - 如何在 ArangoDB AQL 查询中获取第一个和最后一个条目

标签 max min arangodb aql

我需要有关 ArangoDB AQL 查询的帮助。我有一个事务详细信息集合( EventTran ),它在其父表( Event )上记录更新详细信息。 EventTran属性包括 timestamp ,以及对父项 _id_event 的引用.我正在尝试制定一个查询以返回仅包含第一个和最后一个的数组(由 timestamp )EventTran指定 id_event 的文档.下面是一个例子:

FOR event IN EventTran
    FILTER event._id_event == "Event/167697"
    SORT event.timestamp DESC
    RETURN event

可能返回:
[
  {
    "_key": "214092",
    "_id": "EventTran/214092",
    "_id_event": "Event/167697",
    "timestamp": 1511202637
  },
  {
    "_key": "213958",
    "_id": "EventTran/213958",
    "_id_event": "Event/167697",
    "timestamp": 1511202542
  },
  {
    "_key": "191809",
    "_id": "EventTran/191809",
    "_id_event": "Event/167697",
    "timestamp": 1511118705
  },
  {
    "_key": "167701",
    "_id": "EventTran/167701",
    "_id_event": "Event/167697",
    "timestamp": 1510965562
  }
]

我想要一个查询,该查询将返回一个仅包含第一个和最后一个项目的数组,即第一个日志条目和最近的日志条目:
[
  {
    "_key": "214092",
    "_id": "EventTran/214092",
    "_id_event": "Event/167697",
    "timestamp": 1511202637
  },
  {
    "_key": "167701",
    "_id": "EventTran/167701",
    "_id_event": "Event/167697",
    "timestamp": 1510965562
  }
]

最佳答案

以下无疑不是最好的解决方案
情况,但它确实避免了排序,这可能是最后一件事
除非集合很小,否则你想做。

想法很简单:确定最小值和最大值,然后收集最小项并选择其中之一,对于最大项也是如此。

LET mnmx = (
  FOR x in EventTran
  FILTER event._id_event == "Event/167697"
  COLLECT AGGREGATE mn = MIN(x.timestamp), mx = MAX(x.timestamp)
  RETURN {mn,mx} )

LET mn = mnmx.mn
LET mx = mnmx.mx

LET least = (
  FOR x in EventTran
  FILTER x.timestamp == mn
  COLLECT y=x INTO minimal
  RETURN minimal[0] )

LET greatest = (
  FOR x in EventTran
  FILTER x.timestamp == mx
  COLLECT y=x INTO maximal
  RETURN maximal[0] )

RETURN {least, greatest}

最后一行是 {"least": least, "greatest": best} 的缩写,leastgreatest是具有最少和最大时间戳的项目。

关于max - 如何在 ArangoDB AQL 查询中获取第一个和最后一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47399370/

相关文章:

java - Spring boot 的 Arango Edge 创建错误

mysql - 用于检索电影关系的图形引擎

r - 获取r中具有最大日期的所有相应行

pandas - 为什么pandas max 函数没有返回正确的最大日期?

mysql - 选择具有 MAX 值的行

Perl 使用自定义比较函数查找最小值

python - 一个 Dataframe 的每一列的最大值和最小值

javascript - 获取数组 JavaScript 中 key 对值的最大数量

c - 为什么 INT64_MIN 有不同的定义?为什么他们的行为不同?

python-3.x - NoSQL 数据库 : ArangoDB