我还没有真正的代码,但我有相反的
我需要 current_user.friends(:f).match_to(event)
这将返回与我的事件节点有关系的好友。我需要的是那些没有这种关系的人。
我必须像文档中那样喂它
吗 blog.query_as(:blog).match("blog<-[:COMMENTS_ON]-(:Comment)<-[:AUTHORED]-(author:Person)").where("author.age > 30").pluck(:author)
但是没有关系?
所以像
current_user.friends.query_as(:f).match("event<-[invite:invited]-(f:User)).where(invite: nil)
还是有别的办法?
该查询不起作用,因为如果您在密码中指定 MATCH,则说该关系必须存在。 你需要做的是在 WHERE 子句中使用匹配 ascii 语法(neo4j 勉强支持这种情况):
current_user.friends.query_as(:friend).
match(event: {neo_id: event.neo_id}).
where("NOT(friend-[:invited]->(event:Event))").
pluck(:friend)
我突然想到,你应该能够在第二行做match(event: event)
。 你也许可以,但我忘了。
另请注意,match_to
适用于链中的最新关联(因此,在第一个示例中,您将尝试将event
对象与用户的朋友之一匹配,这不起作用)。