2013-08-28 4 views
1

La structure de mes nœuds sont comme ceci:Neo4j crée une même instance sur la sélection des données

==> | 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"} 

Lorsque je tente de créer ces nœuds à nouveau, un script php j'ai écrit des contrôles sur fs_id de constater que si le noeud existe déjà ou non. S'il existe, il me renvoie le noeud et n'en crée pas un nouveau.

Maintenant, le problème est que même s'il ne crée pas de nouveaux nœuds, la console me le montre.

==> | 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"} 

Regardez les identifiants de nœuds, ils sont identiques! Et si j'explore le noeud 618 par exemple dans le navigateur de données, il me renvoie un seul noeud. Également la requête

start n=node(618) return n; 

renvoie également une seule ligne. Mais la requête ci-dessous renvoie plusieurs lignes du même ID de noeud et le nombre de lignes augmente lorsque je vérifie l'existence des noeuds ci-dessus.

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

Il est peut-être rien, mais je suis curieux de savoir que si Neo4j est en quelque sorte la mémoire supplémentaire pour manger faire ceci ou il est juste quelque chose comme le système de mise en cache.

Répondre

2

Vous avez probablement plusieurs relations BEEN, puis chacune de ces relations génère une autre ligne de résultats.

Si vous avez juste une ligne par lieu faire:

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

pour voir les différentes relations, utilisez:

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

Wow. D'une certaine manière, il y a plus d'une relation BEEN comme vous l'avez dit. – gzg

Questions connexes