2017-10-05 33 views
1

任务:从User集合中获取随机朋友建议。AQL:如何过滤哪里不是边缘

这是一个用户采集例如:

{ 
    "firstname": "John", 
    "lastname": "Doe", 
    "username": "johndoe", 
    "email": "[email protected]" 
} 

我也有一个边缘收集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,它涉及friendRequestUser集合之间的边缘

回答

1

我发现我可以这样做w ith查询!

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 
+0

为了计算从像'用户/ John'文档ID文件密钥,则可以使用'PARSE_IDENTIFIER()':'RETURN PARSE_IDENTIFIER(fr._to).key' - HTTPS://docs.arangodb的.com/3.2/AQL /功能/ Document.html#parseidentifier – CoDEmanX