Neo4j gem - 查询特定关系


有很多

方法可以获取节点和关系的模式,甚至可以根据关系属性查找关系本身(例如 EnrolledIn.where(since: 2002)但是根据节点的特定属性获取关系的最佳方法是什么。例如

current_user -[:关系]->事件

我知道事件 ID,所以对我来说,最合乎逻辑的方法是查询模式,将 event.id 作为正在搜索的属性之一。我现在有这样的东西

event_rel = current_user.events(:e, :rel).where(id: event_id).pluck(:rel)

以上不起作用,它返回一个数组

你正在做的很好,pluck(:rel)总是会返回一个数组。如果你知道你只想要一个rel,那就去做

event_rel = current_user.events(:e, :rel).where(id: event_id).limit(1).pluck(:rel).first

如果您使用的是 github 的主分支,则可以使用first_rel_to方法,该方法(以及match_to)正在改变我最近使用 gem 的方式。

event_rel = current_user.events.first_rel_to(event_id)

几天前添加了给它一个 ID 的功能,如果你从 Rubygems 中提取,它将不起作用。3.0.4 中的方法版本不接受 ID,它只接受完整节点。如果您碰巧加载了节点,则可以在已发布版本中执行event_rel = current_user.events.first_rel_to(event)

如果你不想使用弹拨,你可以做event_rel = current_user.events.where(id: event_id). limit(1).each_rel.first.请注意,如果您省略limit(1),则会将这两个节点之间的每个 rel 返回给 Ruby,所以除非您知道只会取回一个,否则不要使用它。当我这样做时,我通常会添加limit(1),即使我只认为我会拿回一个rel,因为我喜欢安全。

我建议你将 Gemfile 指向 Github 中的最新提交,只需通读 wiki 中有关 4.0 更改的新部分即可。它很稳定,新功能非常酷。

相关内容

  • 没有找到相关文章

最新更新