我最近开始使用Neo4j并且正在努力了解事情的运作方式。我正在尝试在我的脚本中创建的节点之间创建关系。我发现的密码查询看起来应该可以工作,但我不知道如何获取id来替换#的
START a= node(#), b= node(#)
CREATE UNIQUE a-[r:POSTED]->b
RETURN r
答案 0 :(得分:5)
如果您想使用普通密码,documentation有很多用法示例。
创建节点时,您可以return them(或通过返回id(a)
只显示其ID),如下所示:
CREATE (a {name:'john doe'}) RETURN a
这样你可以保持id来添加关系。
如果要在以后添加关系,则不应使用节点的内部标识从外部系统引用它们。例如,如果删除并创建节点,则可以重复使用它们。
您可以通过全部扫描并使用WHERE
进行过滤来搜索节点,也可以向数据库添加index,例如:如果在名称上添加auto_index:
START n = node:node_auto_index(name='john doe')
并从那里继续。 Neo4j 2.0将透明地支持索引查找,以便MATCH和WHERE应该同样有效。
如果您正在使用python,您还可以查看py2neo,它使用cypher和REST接口与服务器进行通信时为您提供更加pythonic的界面。
答案 1 :(得分:2)
这可能就是你要找的东西:
START n = node(*) , x = node(*)
Where x<>n
CREATE UNIQUE n-[r:POSTED]->x
RETURN r
它将在所有节点之间创建POSTED
关系,如此
+-----------------------+
| r |
+-----------------------+
| (0)-[10:POSTED]->(1) |
| (0)-[10:POSTED]->(2) |
| (0)-[10:POSTED]->(3) |
| (1)-[10:POSTED]->(0) |
| (1)-[10:POSTED]->(2) |
| (1)-[10:POSTED]->(3) |
| (2)-[10:POSTED]->(0) |
| (2)-[10:POSTED]->(1) |
| (2)-[10:POSTED]->(3) |
| (3)-[10:POSTED]->(0) |
| (3)-[10:POSTED]->(1) |
| (3)-[10:POSTED]->(2) |
如果你不想要参考节点(0)和其他节点之间的关系,你可以像这样进行查询
START n = node(*), x = node(*)
WHERE x<>n AND id(n)<>0 AND id(x)<>0
CREATE UNIQUE n-[r:POSTED]->x
RETURN r
结果就是这样:
+-----------------------+
| r |
+-----------------------+
| (1)-[10:POSTED]->(2) |
| (1)-[10:POSTED]->(3) |
| (2)-[10:POSTED]->(1) |
| (2)-[10:POSTED]->(3) |
| (3)-[10:POSTED]->(1) |
| (3)-[10:POSTED]->(2) |
答案 2 :(得分:0)
在客户端使用Javascript我发布了密码查询:
start n = node(*) WHERE n.name = '" + a.name + "' return n
然后以以下形式解析响应“self”中的id号:
server_url:7474/db/data/node/node_id
答案 3 :(得分:0)
经过几个小时的尝试,我终于找到了我想要的东西。我正在努力研究如何返回节点并发现
userId=person[0][0][0].id
会返回我想要的东西。谢谢你的帮助!
答案 4 :(得分:0)
使用py2neo,我发现的方法非常有用,就是使用远程模块。
from py2neo import Graph, remote
graph = Graph()
graph.run('CREATE (a)-[r:POSTED]-(b)')
a = graph.run('MATCH (a)-[r]-(b) RETURN a').evaluate()
a_id = remote(a)._id
b = graph.run('MATCH (a)-[r]-(b) WHERE ID(a) = {num} RETURN b', num=a_id).evaluate()
b_id = remote(b)._id
graph.run('MATCH (a)-[r]-(b) WHERE ID(a)={num1} AND ID(b)={num2} CREATE (a)-[x:UPDATED]-(b)', num1=a_id, num2=b_id)
远程函数接收py2neo Node对象,并具有_id属性,可用于从图形数据库中返回当前ID号。