【问题标题】:Option 'rel_length ' in Neo4j.rb doesn't work properlyNeo4j.rb 中的选项“rel_length”无法正常工作
【发布时间】:2018-03-06 19:06:20
【问题描述】:

问题类似于this question,但在我的例子中,'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...

【问题讨论】:

  • 有趣,感谢您的关注!如果您能查明导致它的 gem 的版本(几乎可以肯定来自 neo4j gem),那将会很有帮助。
  • 来自我的“宝石清单”:neo4j (8.3.4, 8.0.11, 8.0.7, 7.2.3) neo4j-community (2.2.4.1) neo4j-core (8.1.0, 7.0 .8、7.0.4、6.1.6)neo4j-rake_tasks(0.7.11、0.7.10、0.7.9)neo4j-rspec(0.2.4)
  • 我正在尝试使用不同的选项,例如 'rel_length: 4'、'rel_length: {max: 4}' 它只返回“to_node”关系上的人。
  • 我认为InverseFalcon 的见解是正确的。如果可变长度模式未出现在 Cypher 查询中,则更改选项不会改变任何内容。但我知道您使用的是neo4j 8.3.4。我的建议是您在 8.0.7 和 8.3.4 版本之间尝试不同的版本(通过更改您的 Gemfile),以找出具体引入此更改的版本。我认为它会是次要版本之一(8.1.0、8.2.0 或 8.3.0)
  • 你可以在这里看到所有的版本:rubygems.org/gems/neo4j/versions

标签: ruby-on-rails neo4j neo4j.rb


【解决方案1】:

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

您可能想查看syntax for variable-length patterns

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

【讨论】:

  • 感谢您的关注
【解决方案2】:

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

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

我正在查看介于 8.1.5 和 8.2.1 之间的 the difference,它似乎主要在 with_associations 附近。我很确定rel_length 在 8.2.x 之后仍然可以正常工作,但是如果那行代码不起作用,那么也许我错了......

【讨论】:

  • 在 gem 版本 8.1.5 (nil, nil, rel_length: 1..4) 中工作正常。如果我将版本更改为 8.2.1,则按照我在开始主题中的描述工作。
猜你喜欢
  • 2023-03-07
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多