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

詹姆斯·哈斯克尔

我需要有关ArangoDB AQL查询的帮助。我有一个交易明细集合(EventTran),它在其父表(Event上记录了更新明细EventTran属性包括timestamp和对父项的引用_id_event我正在尝试计算一个查询,以返回指定的第一个和最后一个(按timestampEventTran文档的数组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
  }
]
j

有两种可能的解决方案:

1)第一个是执行两个查询,并仅从每个查询返回顶部/底部文档:

RETURN [
  (FOR event IN EventTran  
     FILTER event._id_event == "Event/167697"
     SORT event.timestamp DESC
     LIMIT 1
     RETURN event
  )[0],
  (FOR event IN EventTran  
     FILTER event._id_event == "Event/167697"
     SORT event.timestamp ASC
     LIMIT 1
     RETURN event
  )[0]
]

如您所见,一个查询使用排序顺序,另一个查询DESC使用排序顺序ASC每个查询仅返回一个文档,每个查询仅返回该文档。如果没有用于指定_id_event值的匹配文档,则查询将返回null每个文档因此总体结果将变为[null, null]

2)替代方法是只做一个查询即可完成所有操作,并仅从中返回第一个和最后一个文档:

LET results = (
  FOR event IN EventTran  
     FILTER event._id_event == "Event/167697"
     SORT event.timestamp ASC
     RETURN event
)
RETURN [
  results[0],
  results[-1]
]

但是,这将关联事件的所有文档(可能很多?),因此两次查询解决方案可能更有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MySql 从查询中获取第一个和最后一个结果

MongoDB在聚合查询中获取第一个和最后一个文档

在一个查询中获取第一个和最后一个项目

PHP:获取数组中的第一个和最后一个元素条目及其键

如何获取唯一的列值以及如何从游标中获取第一个条目和最后一个条目

Mysql查询获取内部连接查询中第一个和最后一个事务之间的天数

如何获取文件中的第一个和最后一个日期

查询事件日志。如何查询以单独获取第一个和最后一个事件?

熊猫从组中获取列的第一个和最后一个值

获取groupby中的第一个和最后一个值

从解析的数组中获取第一个和最后一个日期

使用RLE从组中获取第一个和最后一个值

如何删除列中的第一个单词和最后一个单词?

如何选择<tr>中的第一个和最后一个<td>?

如何从双向链表中删除第一个和最后一个节点?

获取给定时间跨度的第一个和最后一个条目

Java LinkedHashMap获取第一个或最后一个条目

如何从数组中获取最多 3 个第一个和最后一个项目

如何将分区中的最后一个条目与下一个中的第一个条目合并?

如何在PostgreSQL中的一行上获取第一个和最后一个值

如何使用pymongo获取第一个和最后一个日期值

如何获取当年的第一个和最后一个日期javascript

如何从C中的行中获取第一个和最后一个单词?

ArangoDB uniqueVertices全局,不包括第一个和最后一个顶点

如何从pyspark的dataframe列中获取第一个值和最后一个值?

如何使用SQL获取列中每个分区的第一个和最后一个值

如何在javascript中获取对象的第一个,最后一个和其他值?

如何获取特定样式的jquery中的第一个和最后一个值?

如何从给定的数值月份中获取月份的第一个和最后一个日期PHP