我正在使用工作Negraphy示例的简单变体进行测试,虽然过滤器似乎应该可以工作,但我没有任何运气。我可以在 position.length 上过滤,它工作正常,但我现在尝试根据节点属性进行过滤。
给定这些节点:
node1 = Neography::Node.create("name" => "node1")
node2 = Neography::Node.create("name" => "node2")
person1 = Neography::Node.create("name" => "Person1", "role" => "author")
person2 = Neography::Node.create("name" => "Person2", "role" => "author")
person3 = Neography::Node.create("name" => "Person3", "role" => "editor")
Neography::Relationship.create(:user, node1, person1)
Neography::Relationship.create(:user, node2, person2)
Neography::Relationship.create(:user, node1, person3)
Neography::Relationship.create(:user, node2, person3)
将"the_node"设置为 person1,我正在尝试让它返回 person3:
the_node.both(:user).
order("breadth first").
uniqueness("node global").
#filter("position.length() == 2;").
filter("currentNode.getProperty('role') == 'editor';").
depth(2).
map{|n| n.name}.join(', ')
注释掉的过滤器按预期返回 person3(第 2 级关系),但基于"角色"属性的过滤器似乎过滤了所有内容,因此结果为空。
任何建议都会很棒;我绝对是neo4j和neography的新手。
而不是遍历端点,我会研究密码,请参阅 http://docs.neo4j.org/chunked/snapshot/cypher-query-lang.html,这是由Negraphy支持的
然后,您的查询将类似于
start user = node(1)
match user-[:user]->person
where person.role = "editor"
return person.name
呵呵