【问题标题】:neo4jrb: Pulling just desired properties for performanceneo4jrb:仅提取所需的性能以提高性能
【发布时间】:2016-03-22 18:52:27
【问题描述】:

使用 ActiveNode,用户如何仅提取名称,或者仅提取节点的名称和描述?

基于https://github.com/neo4jrb/neo4j/wiki/Search-and-Match的示例

让我们扩展模型如下:

class Lesson
  include Neo4j::ActiveNode
  property :scheduled_time

  has_many :in, :students, origin: :lesson
  has_many :out, :teachers, type: 'taught_by'
end

如果想要的信息是“这个学生的老师在教什么其他时间?”,我们只需要每节课的时间。 我们如何使用 Neo4jrb 对这些属性进行 CYPHER 查询?

【问题讨论】:

  • (对于奖励积分:在单个数组中返回这些属性)

标签: ruby-on-rails neo4j


【解决方案1】:

我想要选择您想要的字段并将它们作为模型对象返回的选项。但我不认为那是你所要求的(幸运的是,因为它还没有;)

所以我相信pluck 是你想要的:

student.lessons(:student_lesson).teachers.lessons(:other_lesson).where('student_lesson <> other_lesson').pluck(:scheduled_time)

这将生成适当的 Cypher 并返回一个包含 scheduled_time 值的数组。

这实际上可能是一种更简单的方法:

student.lessons.teachers.lessons.pluck(:scheduled_time)

通常,如果所有条件都在单个 MATCH 中,这应该可以工作,因为 Cypher 不会在单个 MATCH 中两次遍历相同的关系。但是,关联链接语法会生成多个MATCH 子句。它实际上用于生成单个 MATCH,但存在一些问题(目前我无法理解)。

有关单场比赛和多场比赛的更深入解释,请参阅这个 SO 问题:

What does a comma in a Cypher query do?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2013-02-12
    • 2021-12-18
    • 2011-05-07
    • 2016-04-19
    • 2016-10-07
    相关资源
    最近更新 更多