AQL:如何过滤不在边缘的地方
AQL: How to filter where NOT IN edge
任务:从User
collection获取随机好友建议。
这是一个用户 collection 示例:
{
"firstname": "John",
"lastname": "Doe",
"username": "johndoe",
"email": "john@doe.com"
}
我也有一个 edge collection 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
,它涉及User
collections[=19 之间的friendRequest
边=]
我发现我可以通过这个查询做到这一点!
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
任务:从User
collection获取随机好友建议。
这是一个用户 collection 示例:
{
"firstname": "John",
"lastname": "Doe",
"username": "johndoe",
"email": "john@doe.com"
}
我也有一个 edge collection 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
,它涉及User
collections[=19 之间的friendRequest
边=]
我发现我可以通过这个查询做到这一点!
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