Neo4j.在使用where时,没有定义本地变量或方法



我正在尝试检索描述中包含单词"Art"的所有BISAC节点。

ba = Bisac.where(bisac_value =~ '.*Art.*')
NameError: undefined local variable or method `bisac_value' for main:Object

等效的cypher查询检索到10个节点。

MATCH (b:Bisac) WHERE (b.bisac_value =~ '.*Art .*') RETURN b;

我在这里做错了什么?

您的解决方案肯定会起作用,但不诉诸于使用Query API的更简单的解决方案是简单地使用Ruby正则表达式:

Bisac.all(:l).where(bisac_value: /.*Art.*/)

您甚至可以使用不区分大小写的正则表达式(/.*Art.*/i),它也会被翻译成Cypher语法

找到了答案(在文档中),这里是链接:http://neo4jrb.readthedocs.org/en/5.1.x/Querying.html

查询应该是:

ba = Bisac.all(:l).where("l.bisac_value =~ {the_value}").params(the_value: '.*Art.*').pluck(:l)

或者更简单的:

ba = Bisac.all(:l).where("l.bisac_value =~ '.*Art.*'").pluck(:l)

将Kaminari从分页中移除,并使用will_paginate。使用page_entries_info

解决问题。

相关内容

  • 没有找到相关文章

最新更新