Neo4j节点显示在';n';当I';m在curl中提供特定变量
以下是我通过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
{
"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
下。没问题。你可能想确保你已经通读了,我想你会发现