2017-10-05 3 views
1

TÂCHE: Obtenez des suggestions d'amis aléatoires de User collection.AQL: Comment filtrer où NON IN bord

Ceci est un exemple de collection de l'utilisateur:

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

J'ai aussi une collection de bord friendRequest qui stocke les demandes d'amis comme celui-ci:

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

PROBLÈME: Je veux filtrer mon auto Utilisateurs auxquels j'ai déjà envoyé une demande.

Ceci est ma requête initiale pour obtenir 3 utilisateurs hors moi

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

Je veux être en mesure d'exclure des gens que je l'ai déjà envoyé une demande d'utiliser quelque chose comme FILTER NOT IN (<<SOME EDGE QUERY>>)

NOTE: J'ai aussi un graphique friendRequest_graph qui concerne friendRequest bord entre User collections

Répondre

1

J'ai découvert que je peux le faire w Avec cette requête!

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

Pour calculer la clé de document à partir d'un document ID comme 'utilisateur/John', vous pouvez utiliser' PARSE_IDENTIFIER() ':' RETOUR PARSE_IDENTIFIER (fr._to) .key' - https: //docs.arangodb .com/3.2/AQL/Fonctions/Document.html # parseidentifier – CoDEmanX