AQL:如何过滤NOT IN边缘的位置

时间:2017-10-05 16:24:30

标签: arangodb aql

任务:从User集合中获取随机好友建议。

这是一个用户集合示例:

{
  "firstname": "John",
  "lastname": "Doe",
  "username": "johndoe",
  "email": "john@doe.com"
}

我还有一个边缘集合friendRequest,可存储这样的朋友请求:

_from: "User/John" -> _to: "User/Jane"

问题:我想过滤掉自己和我已经发送过请求的用户。

这是我的初步查询,让3个用户排除我自己

FOR user IN User
FILTER user._key != 'myself'
SORT RAND()
LIMIT 3
RETURN user

我希望能够排除我已经发送使用FILTER NOT IN (<<SOME EDGE QUERY>>)

之类的请求的人

注意:我还有一个与friendRequest_graph个收藏品之间的friendRequest边缘相关的图表User

1 个答案:

答案 0 :(得分:1)

我发现我可以用这个查询来做到这一点!

FOR user IN User
  FILTER user._key != 'myself' && 
  user._key NOT IN (FOR fr IN friendRequest FILTER fr._from == 'User/myself' RETURN LTRIM(fr._to, 'User/'))
  SORT RAND()
  LIMIT 3
  RETURN user