我如何向 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 以下内容:
- 有关系的节点
workingOn
- 创建日期是昨天(我用了纪元时间的整数,因为它好像没有日期类型?)
- return 属性
value
我试过了:
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 被删除,后者可以回收并用于新节点。
我正在查看以下内容:
https://github.com/maxdemarzi/neography/wiki/Scripts-and-queries
我试图得出 "query" 的值,它将 return 以下内容:
- 有关系的节点
workingOn
- 创建日期是昨天(我用了纪元时间的整数,因为它好像没有日期类型?)
- return 属性
value
我试过了:
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 被删除,后者可以回收并用于新节点。