Neo4j.rb 中的选项 'rel_length ' 无法正常工作



这个问题类似,但就我而言,'neo4j-core' gem 版本从 7.0.4 更新到 8.1.0,而'neo4j' 8.0.7 -> 8.3.4

class Person
include Neo4j::ActiveNode
has_one :out, :ancestor, rel_class: :HasFather
end
class HasFather
include Neo4j::ActiveRel
from_class :Person
to_class :Person
type 'HAS_FATHER'
end

有"显示"方法,我有代码

@ancestors = @person.ancestor(rel_length: 1..4)

在更新之前,它运行良好,方法返回了一个包含 4 人的数组。但现在它只返回一个人。

Person#ancestor 
MATCH (previous:`Person`)
WHERE (ID(previous) = {ID_previous})
OPTIONAL MATCH (previous)-[rel1:`HAS_FATHER`]->(next:`Person`)
RETURN 
ID(previous), 
collect(next) | {:ID_previous=>38}
ETHON: performed EASY effective_url=http://localhost:7474/db/data/transaction/commit response_code=200 return_code=ok total_time=0.01983900000000005
@ancestors = #<AssociationProxy Person#ancestor [#<Person uuid: "f4454bcb-ffc8-4050-a486-0e7172ea864a", generation: nil, name...

该密码查询未显示可变长度关系。假设previous只有一个父亲,你最多总是在一个节点上收集。

您可能需要查看可变长度模式的语法:

OPTIONAL MATCH (previous)-[rel1:`HAS_FATHER`*..4]->(next:`Person`)

我正在研究这个,但我很好奇当你这样做时会发生什么:

@ancestors = @person.ancestor(nil, nil, rel_length: 1..4)

我正在查看 8.1.5 和 8.2.1 之间的区别,似乎主要在with_associations. 我很确定rel_length在 8.2.x 之后仍然正常工作,但如果那行代码不起作用,那么也许我错了......

最新更新