2017-10-05 32 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