2017-07-11 1 views
0

Im ayant un problème dans la coquille de Gremlin, lors de l'exécution de la commande suivante:multiplie Aggregate-étape suivante Graph-Step

g.V().hasLabel('FirstLabel').aggregate('nodes') 
.V().hasLabel('SecondLabel').aggregate('nodes') 
.cap('nodes') 

Mon but est de regrouper tous les noeuds correspondant à ces deux étiquettes. Je sais que je peux réaliser ceci avec différentes étapes de filtrage, mais je veux accéder aux noeuds avec l'agrégat. L'exemple donné multiplie tout après l'étape .V() pour chaque objet portant l'étiquette firstLabel. Si j'ai 3 nœuds avec FirstLabel et 3 nœuds avec Secondlabel, le jeu de résultats me donne les 3 premiers nœuds et les 3 autres nœuds 3 fois (donc 12 nœuds).

Je peux cependant atténuer cela en utilisant .limit (1) après le premier agrégat, mais cela ne semble pas être une bonne solution.

Existe-t-il un moyen de réaliser l'étape graphique seulement une fois sans la limite?

Répondre

2

Réduire le nombre de transbordeurs actuels à 1. Cela peut être fait en utilisant presque toute étape de barrière réduisant. Essayez ceci par exemple:

g.V().hasLabel('FirstLabel').aggregate('nodes').cap('nodes'). 
    V().hasLabel('SecondLabel').aggregate('nodes').cap('nodes') 
+0

Merci, cela a fonctionné! Mais je ne comprends toujours pas pourquoi le problème se produit. Une simple action barrier() au lieu de cap() n'a aucun effet. Je ne comprends pas pourquoi aggregate(). Cap() réduit le traversier à 1 – TApplis

+0

La clé est d'utiliser une étape de barrière réductrice. 'cap()', 'fold()', 'count()', etc vont tous fonctionner, car ils mènent tous à un seul traverser restant. –

1

Je ne suis pas clair sur votre cas d'utilisation, mais il semble que cela fonctionne bien:

g.V().hasLabel('FirstLabel', 'SecondLabel').aggregate('nodes').cap('nodes') 
+0

Bien sûr, cela me donne les vertices corrects, mais je vois un problème plutôt essentiel avec la multiplication de l'étape graphique pour chaque solution trouvée dans mon agrégat. Ces étiquettes étaient plutôt un exemple pour produire le problème. – TApplis