这个问题类似,但就我而言,'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 之后仍然正常工作,但如果那行代码不起作用,那么也许我错了......