我想查询连接到用户的所有合作伙伴
WITH partner
FOR u IN user
FILTER u._name == @user_name
FOR v IN OUTBOUND user GRAPH 'accounts'
RETURN v
此查询在@user_name == Client
时有效,因为它只与合作伙伴相关联,但当@user_name == Admin
个人资料也被返回时,我预计会为空列表(因为用户Admin
没有合作伙伴)
我是否以正确的方式使用关键字WITH
?
答案 0 :(得分:2)
WITH
关键字的目的是指定collections involved in a traversal,以便在遍历期间可以在查询开始时读取锁定而不是懒惰,这可能导致死锁情况。它是集群中遍历所必需的。
它不会影响查询结果。如果要返回仅来自特定集合的节点的路径,请使用带有IS_SAME_COLLECTION()的过滤器:
WITH user, partner, profile
FOR u IN user
FILTER u._name == @user_name
FOR v IN OUTBOUND user GRAPH 'accounts'
FILTER IS_SAME_COLLECTION('partner', v)
RETURN v