我正在考虑以下事项:
https://github.com/maxdemarzi/neography/wiki/Scripts-and-queries
我试图提出“查询”的值,它将返回以下内容:
workingOn
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
答案 0 :(得分:1)
您使用的是过时的Cypher语法。如果您使用的是最新版本的neo4j(3.1+)并安装了相应的APOC插件,则以下内容应该有效。 (我假设在进行查询时会传递Levenshtein_search
参数。如果不是,请将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;
函数获取当前纪元时间(以毫秒为单位),并使用APOC函数apoc.date.convert两次获取 start 的纪元时间昨天。
它还将timestamp()
模式移动到(n)-[:workingOn]-()
子句,以便每个WHERE
只生成一行,即使n
有多个{{1}关系。
(如果您想返回n
节点的workingOn
属性,RETURN
子句实际上是RETURN n.value
。
[UPDATE]
GrapheneDB支持像APOC这样的插件。 See their documentation
要通过本机neo4j ID进行搜索,您需要先了解ID值。您可能需要先执行另一个查询才能获得它。但请注意,您可能更好地分配和使用自己的ID而不是本机ID,因为如果原始ID被删除,后者可以被回收并用于新节点。