过滤与某个节点无关的Neo4j节点

Dan*_*ink 1 ruby-on-rails neo4j cypher neo4j.rb

我想找到所有尚未与我的酒吧相关联的Foos.我使用neo4j.rb(4.1.2)和Rails(4.2).我现在使用的代码,产生正确的输出,但感觉不理想的是:

@foos = Foo.all.find_all do |foo|
  foo.bars.rels_to(current_bar).count == 0
end 
Run Code Online (Sandbox Code Playgroud)

使用Cypher有更好的方法吗?

cyb*_*sam 6

这是在Cypher中执行此操作的一种方法.我假设您只对直接关系感兴趣,并且该Bar节点由id属性标识.

MATCH (b:Bar), (f:Foo)
WHERE b.id = 123 AND NOT (b)--(f)
RETURN b, COLLECT(f);
Run Code Online (Sandbox Code Playgroud)

  • 在Neo4j.rb中,那是'current_bar.query_as(:b).match('f:Foo').其中('NOT(b) - (f)').pluck(:b,'collect( F)")` (4认同)