使用Cypher Query在neo4j中与START一起使用的特殊符号

时间:2019-06-17 08:01:28

标签: neo4j cypher

START node=node:TEST_INDEX('*:*') 
WHERE node.nodeName =~ '" + nodeName + "' 
RETURN node.nodeName as nodeName

在此特定查询中,是什么意思?

我已将此查询替换为

MATCH(node:TESTDATA) 
WHERE node.nodeName =~  '(?i)CXH.*'
RETURN node.nodeName as nodeName

但是返回的结果完全不同,应该返回与预期相同的结果。

2 个答案:

答案 0 :(得分:1)

此查询('*:*')表示给我所有索引列和所有索引值。

以下摘自neo4j ver 3.1文档http://we-yun.com/doc/3.1/neo4j-developer-manual-3.1-dotnet.pdf

通过旧索引查找起点时(按索引查询节点)

  

通过更复杂的Lucene查询可以找到起点时,   这是使用的语法:node:index-name(“ query”)。这使您可以   编写更高级的索引查询。

查询

START n = node:nodes("name:A")
RETURN n

由索引返回名称为“ A”的节点。

Result
+-------------------+
| n                 |
+-------------------+
| Node[0]{name:"A"} |
+-------------------+
1 row

答案 1 :(得分:0)

这应该做同样的事情。

MATCH(node:TESTDATA) 
WHERE node.nodeName = $nodeName
RETURN node.nodeName as nodeName

第一个查询中的START索引查找只是说:给我所有该索引中的所有内容,并带有TESTDATA标签。

它实际上没有使用索引来查找,这不明智。

如果您现在在:TESTDATA(nodeName)上创建索引,它将在查询中使用它,因此您的查询会更快。