简体   繁体   English

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

[英]AQL: How to filter where NOT IN edge

TASK : Get random friend suggestions from User collection.任务:从User集合中随机获得好友推荐。

This is a User collection example:这是一个用户集合示例:

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

I also have an edge collection friendRequest that stores friend requests like this:我还有一个边缘集合friendRequest ,用于存储这样的好友请求:

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

PROBLEM : I want to filter out my self and Users I already sent a request to.问题:我想过滤掉我自己和我已经向其发送请求的用户。

This is my initial query to get 3 users excluding myself这是我获得 3 个用户(不包括我自己)的初始查询

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

I want to be able to exclude people I've already sent a request to using something like FILTER NOT IN (<<SOME EDGE QUERY>>)我希望能够排除我已经使用FILTER NOT IN (<<SOME EDGE QUERY>>)东西发送请求的人

NOTE : I also have a graph friendRequest_graph that relates friendRequest edge between User collections注意:我还有一个图friendRequest_graph ,它关联User集合之间的friendRequest

I found out that I can do that with this query!我发现我可以用这个查询做到这一点!

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM