2012-10-30 61 views
0

我对neo4j相当陌生。我玩过一些cypher和REST API。我想要能够沿着某个路径创建一个叶节点,请考虑这些节点是某些类型的事件。在运行时我不会知道这个事件将被附加到的节点的ID。我需要做一个查找,然后获取节点的id,然后创建我的新节点。Neo4j - Cypher读写回复查询

因此,在运行期间,我希望能够使用密码来获得可以附加事件的节点,并创建新节点以及与MATCH返回的现有节点的关系。所以我遇到了密码备忘单,它有一个我认为很适合的读写回复查询。但在文档中没有太多提及,或者可能是我不是一个超级用户!

有人可以告诉我,如果这(读写回报)是正确的/有效的方法?

非常感谢!

回答

2

是的。这是一个好方法。这是关于CREATE如何在Cypher中工作的好事之一。您也可以选择使用create unique,它可以同时创建rel /节点。

start n=node(1) 
create unique n-[:event]->(event {prop:"val"}) 
return n, event; 

或者不create unique:喜欢的东西

start n=node(1) 
create (event {prop:"val"}), n-[:event]->event 
return n, event; 
+0

谢谢 - 可能是我应该的问题已经清晰。在上面的两个例子中,你从节点id 1开始,然后用节点(1)的关系“:event”创建一个节点,我需要这样一个类似于:START client = node:node_auto_index(client_name =“Client1” ) MATCH client - [:OWNS] - >(device1) create(event {time:“1234567890”}),device1 - [:FAILURE_EVENT] - > event return device,event' 这可能吗?我自己没有尝试过上述查询。欢呼 – opensourcegeek

+0

是的,它会工作,但device1将匹配客户端的所有设备:OWNS,这可能不是你想要的? –

+0

良好的捕获 - 不,我想获得一个可能已经创建的独特设备。我是否在'WHERE'然后'CREATE'?我试图避免查询插入/更新。在mongodb中沿着upsert行的东西会很酷。但我不确定如何在neo4j中实现它。很多再次感谢! – opensourcegeek