Neo4j节点显示在';n';当I';m在curl中提供特定变量

Neo4j节点显示在';n';当I';m在curl中提供特定变量,curl,neo4j,cypher,Curl,Neo4j,Cypher,以下是我通过curl发送的声明: { "statements" :[ { "statement": "CREATE (matrix1:Movie { title : 'The Matrix', year : '1999-03-31' }) CREATE (matrix2:Movie { title : 'The Matrix Reloaded', year : '2003-05-07' }) CREATE (matrix3:Movie { ti

以下是我通过curl发送的声明:

{
    "statements" :[
        {
            "statement":   "CREATE (matrix1:Movie { title : 'The Matrix', year : '1999-03-31' }) CREATE (matrix2:Movie { title : 'The Matrix Reloaded', year : '2003-05-07' }) CREATE (matrix3:Movie { title : 'The Matrix Revolutions', year : '2003-10-27' }) CREATE (keanu:Actor { name:'Keanu Reeves' }) CREATE (laurence:Actor { name:'Laurence Fishburne' }) CREATE (carrieanne:Actor { name:'Carrie-Anne Moss' }) CREATE (keanu)-[:ACTED_IN { role : 'Neo' }]->(matrix1) CREATE (keanu)-[:ACTED_IN { role : 'Neo' }]->(matrix2) CREATE (keanu)-[:ACTED_IN { role : 'Neo' }]->(matrix3) CREATE (laurence)-[:ACTED_IN { role : 'Morpheus' }]->(matrix1) CREATE (laurence)-[:ACTED_IN { role : 'Morpheus' }]->(matrix2) CREATE (laurence)-[:ACTED_IN { role : 'Morpheus' }]->(matrix3) CREATE (carrieanne)-[:ACTED_IN { role : 'Trinity' }]->(matrix1) CREATE (carrieanne)-[:ACTED_IN { role : 'Trinity' }]->(matrix2) CREATE (carrieanne)-[:ACTED_IN { role : 'Trinity' }]->(matrix3)"
        }
    ]
}
如您所见,我提供了唯一的变量或标识符,但一旦将它们发送到neo4j,它们都会显示在某个“n”变量下。这使得我在neo4j中操纵和处理数据有点困难

任何帮助都将不胜感激

编辑:下面是一个示例查询,用于查找在John Wick中扮演的所有演员

match (n:Actor)-[:ACTED_IN]->(n:Movie {title:'John Wick'}) 
return n.name
编辑2:让我详细说明我到目前为止所做的工作

在curl中,我发布了上面的命令来生成矩阵的所有节点和关系

完成后,我进入Neo4j,查看发送的内容,表格格式如下所示:


您将看到每个节点都属于
n
变量

您是指诸如
matrix1
keanu
之类的变量吗

变量不存储在数据库中,它们是查询的本地变量,如果查询由WITH子句分隔,并且变量没有带过来,则它们甚至可能超出范围

当您谈到
n
变量时,这可能是您在查询中引入的一个新变量,用于匹配数据库中的数据。同样,您引入的变量仅在查询范围内。如果不喜欢使用
n
,请使用其他变量

编辑

让我们看一下该示例查询:

match (n:Actor)-[:ACTED_IN]->(n:Movie {title:'John Wick'}) 
return n.name
这一个的问题是您引入了一个变量
n
,但您同时对比赛中的:Actor和:Movie使用它,因此它不起作用(您使用的节点不太可能同时标记为:Actor和:Movie,标题为“John Wick”,并且与自身有:ACTED_关系)

您需要为匹配中的不同节点使用不同的变量。只需对:Movie节点上的变量使用
m
,就足以实现此功能

如果
n
m
对您来说过于简洁,请使用不同的变量:

match (actor:Actor)-[:ACTED_IN]->(johnwick:Movie {title:'John Wick'}) 
return actor.name

您是指
matrix1
keanu
等变量吗

变量不存储在数据库中,它们是查询的本地变量,如果查询由WITH子句分隔,并且变量没有带过来,则它们甚至可能超出范围

当您谈到
n
变量时,这可能是您在查询中引入的一个新变量,用于匹配数据库中的数据。同样,您引入的变量仅在查询范围内。如果不喜欢使用
n
,请使用其他变量

编辑

让我们看一下该示例查询:

match (n:Actor)-[:ACTED_IN]->(n:Movie {title:'John Wick'}) 
return n.name
这一个的问题是您引入了一个变量
n
,但您同时对比赛中的:Actor和:Movie使用它,因此它不起作用(您使用的节点不太可能同时标记为:Actor和:Movie,标题为“John Wick”,并且与自身有:ACTED_关系)

您需要为匹配中的不同节点使用不同的变量。只需对:Movie节点上的变量使用
m
,就足以实现此功能

如果
n
m
对您来说过于简洁,请使用不同的变量:

match (actor:Actor)-[:ACTED_IN]->(johnwick:Movie {title:'John Wick'}) 
return actor.name

如果我的回答不令人满意,你能提供一个你很难处理的问题的例子吗?这似乎更多的是误解了Neo4j中的变量是什么以及它们是如何使用的。更新了,这是我使用Neo4j的第一周,因此可能会有误解。如果我的答案不令人满意,您能否提供一个您难以处理的查询示例?这似乎更多的是误解了Neo4j中的变量是什么以及它们是如何使用的。更新了,这是我使用Neo4j的第一周,所以可能会有误解。是的,我指的是这些变量。就是这样,我从来没有引入变量
n
我不确定它来自哪里,它必须是默认的变量号。这导致了我的问题,因为我的数据集中有演员和电影,并且由于它们具有相同的变量名,我无法正确查询数据集。您可以控制在查询中使用的变量。我相应地更新了我的答案。对于使用
MATCH(n)的第二次编辑,返回n LIMIT 25
,问题是:匹配我数据库的所有节点,并将它们绑定到变量
n
(这类似于列别名),然后返回其中的25个。它们将出现在一列下,该列由您用来匹配它们的变量命名,在本例中为
n
。这样更好,谢谢。我仍然有点困惑,为什么我的数据不是按变量组织的,它们都显示在变量
n
下。没问题。你可能想确保你已经通读了,我想你会发现作为一个参考是非常宝贵的。是的,这些就是我所指的变量。就是这样,我从来没有引入变量
n
我不确定它来自哪里,它必须是默认的变量号。这导致了我的问题,因为我的数据集中有演员和电影,并且由于它们具有相同的变量名,我无法正确查询数据集。您可以控制在查询中使用的变量。我相应地更新了我的答案。对于使用
MATCH(n)的第二次编辑,返回n LIMIT 25
,问题是:匹配我数据库的所有节点,并将它们绑定到变量
n
(这类似于列别名),然后返回其中的25个。它们将出现在一列下,该列由您用来匹配它们的变量命名,在本例中为
n
。这样更好,谢谢。我仍然有点困惑,为什么我的数据不是按变量组织的,它们都显示在变量
n
下。没问题。你可能想确保你已经通读了,我想你会发现