Я попробовал этот AQL, и он должен работать:
LET arA = (
for v IN 2 ANY a1 GRAPH 'Graph1'
COLLECT eid = v._id WITH COUNT into groups
RETURN {"eid" : eid, "count" : groups })
LET arB = (
for v IN 2 ANY a2 GRAPH 'Graph2'
COLLECT eid = v._id WITH COUNT into groups
RETURN {"eid" : eid, "count" : groups })
LET x = (FOR x in INTERSECTION (arA[*].eid,arB[*].eid)
RETURN x)
FOR final IN UNION(arA,arB)
FILTER final.eid IN x
SORT final.count DESC
RETURN final
, в основном массивы подсчитываются отдельно, затем вы делаете пересечение, чтобы получить EID, которые находятся в обоих массивах.
Но затем, отдельно, с помощью UNION, снова итерируем все элементы, фильтруя только те из них, которые находятся в INTERSECTION, и сортируем их по атрибуту f.count.Атрибут count теперь доступен, потому что у меня есть записи из обоих исходных массивов, отфильтрованные по eid, представленному в INTERSECTION.
И результаты:
[
{
"eid": "eid6",
"count": 5
},
{
"eid": "eid3",
"count": 4
},
{
"eid": "eid2",
"count": 3
},
{
"eid": "eid3",
"count": 3
}
]