neo4j trouver tous les nœuds avec des propriétés correspondantes
J'ai un relativement grand nombre de nœuds, et je veux trouver toutes les paires de nœuds qui ont des valeurs de propriété, mais je ne sais pas ou les soins à l'avance ce que la valeur de la propriété. C'est essentiellement une tentative de trouver des nœuds dupliqués, mais je peux limiter la définition d'un double de deux ou plusieurs nœuds qui ont la même valeur de la propriété.
Toutes les idées sur la façon de procéder? Ne pas trouver des points de départ dans la neo4j docs. Je suis sur 1.8.2 community edition.
MODIFIER
Désolé de ne pas être clair dans la question initiale, mais je parle de faire cela par le biais de Cypher.
OriginalL'auteur Paul | 2013-05-29
Vous devez vous connecter pour publier un commentaire.
Monogramme à compter des valeurs de la propriété, de retour d'une collection de noeuds ainsi:
Exemple sur console: http://console.neo4j.org/r/k2s7aa
Vous pouvez également faire une analyse d'index avec la propriété comme (pour éviter de regarder les nœuds qui n'ont pas cette propriété):
start n=node:node_auto_index('prop:*') ...
2.0 Monogramme avec une étiquette de l'Étiquette:
yep, de M06 c'est une exigence. merci. Je vais mettre à jour.
OriginalL'auteur Eve Freeman
Que sur l'approche suivante:
java.util.Map
contenant toutes les propriétés d'un nœud. Calculer la carte dehashCode()
Map
à l'aide de la hashCode comme la clé et un ensemble denode.getId()
en tant que valeursCela devrait vous donner les candidats pour être en double. Être conscient de la hashCode() de la sémantique, il y a peut être des nœuds avec des propriétés différentes de cartographie pour le même hashCode.
OriginalL'auteur Stefan Armbruster
Vous pouvez essayer celui-ci qui ne ce qui je pense fait ce que vous voulez.
http://console.neo4j.org/?id=xe6wmt
Les deux nœuds doivent avoir un
name
de la propriété.name
devrait être le même pour les deux nœuds et nous ne veulent qu'une seule paire de deux possibilités qui nous via l'id de comparaison. Pas sûr au sujet de la performance - s'il vous plaît tester.OriginalL'auteur p3rnilla
Neo4j 3.1.1
Si vous voulez trouver les nœuds de propriété spécifique, la Cyper est comme suit:
OriginalL'auteur KAIQI YUAN
Le meilleur/l'option la plus simple est de faire quelque chose comme un local
Map
. Si vous avez fait quelque chose comme cela, vous pouvez créer un code comme ceci:Ce serait d'imprimer une liste. Si vous avez besoin de faire plus, comme la suppression de ces nœuds, vous pourriez faire quelque chose dans l'autre.
Savez-vous le nom de la propriété? Sera-ce de multiples propriétés, ou des copies d'une seule paire nom/valeur? Si vous faites plusieurs propriétés, il suffit de créer une carte pour chaque propriété que vous avez.
Le problème est que vous allez avoir à utiliser une boucle, sauf si vous avez ces nœuds indexé sur le nom de la propriété. Si vous en avez indexé, vous pouvez faire une boucle à travers chaque nœud et de regarder dans l'index si il y a plus de 1 nœuds retournés pour une propriété donnée.
OriginalL'auteur Nicholas
Vous pouvez également utiliser un index sur cette propriété. Ensuite, pour une valeur donnée de récupérer tous les nœuds. L'avantage est que vous pouvez également interroger pour approximations de la valeur.
OriginalL'auteur RaduK
Avec Neo4j 3.3.4 vous pouvez simplement faire ce qui suit:
MATCH (n) where EXISTS(n.propertyName) return n
Simplement changer
propertyName
quelque soit le bien que vous cherchez à trouver.OriginalL'auteur jediwompa