neo4j在选择数据时创建另一个相同的实例

时间:2013-08-28 07:19:16

标签: neo4j

我的节点结构如下:

==> | Node[613]{name:"The Bigos",fs_id:"51a8e1a12fc6e7ef6d121077"}                                            
==> | Node[614]{name:"Maceraperest",fs_id:"51bafb3d498ed54bd4c7fa8c"}                                         
==> | Node[616]{name:"Viking",fs_id:"51bafe1de4b090ea9dceb20e"}                                               
==> | Node[618]{name:"Metro Gross Market",fs_id:"51bb426c498e47af428ca013"}

当我再次尝试创建这些节点时,我编写的php脚本检查fs_id,以查找该节点是否已存在。如果它存在,它将返回节点并且不创建新节点。

现在的问题是,即使它没有创建新节点,控制台也会告诉我它已经完成了。

==> | Node[613]{name:"The Bigos",fs_id:"51a8e1a12fc6e7ef6d121077"}                                            
==> | Node[613]{name:"The Bigos",fs_id:"51a8e1a12fc6e7ef6d121077"}                                            
==> | Node[613]{name:"The Bigos",fs_id:"51a8e1a12fc6e7ef6d121077"}                                            
==> | Node[614]{name:"Maceraperest",fs_id:"51bafb3d498ed54bd4c7fa8c"}                                         
==> | Node[614]{name:"Maceraperest",fs_id:"51bafb3d498ed54bd4c7fa8c"}                                         
==> | Node[614]{name:"Maceraperest",fs_id:"51bafb3d498ed54bd4c7fa8c"}                                         
==> | Node[616]{name:"Viking",fs_id:"51bafe1de4b090ea9dceb20e"}                                               
==> | Node[616]{name:"Viking",fs_id:"51bafe1de4b090ea9dceb20e"}                                               
==> | Node[616]{name:"Viking",fs_id:"51bafe1de4b090ea9dceb20e"}                                               
==> | Node[618]{name:"Metro Gross Market",fs_id:"51bb426c498e47af428ca013"}                                   
==> | Node[618]{name:"Metro Gross Market",fs_id:"51bb426c498e47af428ca013"}                                   
==> | Node[618]{name:"Metro Gross Market",fs_id:"51bb426c498e47af428ca013"}

看看节点ID,它们是一样的!如果我在数据浏览器中浏览节点618,它会返回一个节点。还有查询

start n=node(618) return n;

也会返回单行。但是当我测试上述节点存在时,下面的查询返回多行相同的节点id并且行数增加。

start n=node(331) match n-[:BEEN]->(venues) return venues order by id(venues);

这可能只是我很好奇,如果Neo4j以某种方式为此做了额外的记忆,或者它只是像缓存系统那样。

1 个答案:

答案 0 :(得分:2)

您可能只有多个BEEN关系,然后每个关系产生另一个结果行。

如果每个场地只有一排,请执行以下操作:

start n=node(331) 
match n-[:BEEN]->(venues) 
return distinct venues;

要查看不同的关系,请使用:

start n=node(331) 
match n-[rel:BEEN]->(venues) 
return venues,collect(rel);