假设我有以下文件集:
以及指定关系的以下边集:
在给定日期显示课程和地点的情况下,为学生返回图表的最佳方法是什么?我一直在使用类似下面的内容,但它返回的StudentClass边缘不在日期范围内。此外,由于过滤器不在路径上,我相信所有边缘都将被遍历,这意味着这可能无法很好地扩展。
FOR v, e, p
IN 1..10 OUTBOUND "Students/1234"
StudentClass, ClassLocations
FILTER ((e.endDate > "2017-10-01") AND (e.startDate < "2017-10-01"))
OR (e.endDate == null)
RETURN p
答案 0 :(得分:1)
感谢mark.arangodb,我已经能够创建一个可行的解决方案:
FOR v, e, p
IN 1..10 OUTBOUND "Students/1234"
StudentClass, ClassLocations
FILTER p.edges[*].startDate ALL <= @date
LET counter = (FOR e2 IN p.edges
FILTER NOT_NULL(e2.endDate, @date) >= @date
RETURN e2)
FILTER COUNT(counter) == COUNT(p.edges)
RETURN p
第一个过滤器确保所有边必须在@date绑定参数中给定日期(作为字符串)之前具有startDate。没有startDate属性的边传递此过滤器。 (ArangoDb必须将null视为小于任何值的值。)
LET语句创建一个名为&#34; counter&#34;的变量。并将其分配给一个边数组,这些边的endDate大于给定日期或者没有endDate。最终过滤器仅允许具有与&#34;计数器&#34;中相同数量边缘的路径。变量