使用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查询?
答案 0 :(得分: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问题: