我如何向 neography ruby gem 提供密码查询以按关系和日期 属性 进行搜索?

How do I provide a cypher query to neography ruby gem to search by relationships and date property?

我正在查看以下内容:

https://github.com/maxdemarzi/neography/wiki/Scripts-and-queries

我试图得出 "query" 的值,它将 return 以下内容:

我试过了:

start n=node(id) # where id is the reference node
match n-[:workingOn]-()
where has(n.date < Date.now.to_i and n.date > Yesterday.to_i) # yesterday is a Date for yesterday
return n

已解决: 我从我标记为已解决的问题中获得了洞察力,但我所做的是创建一个查询字符串并使用插值法用所需的值填充它。例如。 query = "Match (n) -[#{relationship}]-(n2)....etc

您使用的是过时的 Cypher 语法。如果您使用的是最新版本的 neo4j (3.1+) 并安装了适当的 APOC 插件,则以下内容应该有效。 (我假设在进行查询时传递了 id 参数。如果没有,请将 $id 替换为实际 ID 值。)

WITH timestamp() AS now
MATCH (n)
WHERE ID(n) = $id AND
  (n)-[:workingOn]-() AND
  apoc.date.convert(apoc.date.convert(now, 'ms', 'd') - 1, 'd', 'ms') < n.date < now
RETURN n;

它使用timestamp()函数获取当前纪元时间(以毫秒为单位),并使用两次APOC函数apoc.date.convert获取start[的纪元时间=41=] 昨天的。

它还将 (n)-[:workingOn]-() 模式移动到 WHERE 子句,这样对于每个 n 只生成一行,即使 n 有多个 workingOn 关系。

(如果您想 return n 节点的 value 属性,RETURN 子句实际上是 RETURN n.value。 )

[更新]

GrapheneDB 支持 APOC 等插件。 See their documentation.

要通过本机 neo4j ID 进行搜索,您需要先知道 ID 值。您可能需要先执行另一个查询才能获取它。但是请注意,您最好分配和使用自己的 ID 而不是本机 ID,因为如果原始 ID 被删除,后者可以回收并用于新节点。