2016-03-24 3 views
0

J'ai deux sommets nommés - UserName et CompanyName, chaque fois que l'utilisateur visite une société, j'augmente le champ de front (par exemple, pageVisit). pour les résultats individuels, je reçois ces valeurs pageVisit, mais comment puis-je obtenir la somme de toutes les pages de l'utilisateur?Comment obtenir la somme d'un champ de bord dans la base de données graphique en utilisant gremlin?

Je veux afficher le nombre total de pages visitées sur une page d'entreprise, je n'ai trouvé aucun moyen d'ajouter les valeurs de bord.

Répondre

3

Vous pouvez utiliser le sum() step:

gremlin> graph = TinkerGraph.open() 
==>tinkergraph[vertices:0 edges:0] 
gremlin> vUser1 = graph.addVertex("UserName","user1") 
==>v[0] 
gremlin> vUser2 = graph.addVertex("UserName","user2") 
==>v[2] 
gremlin> vCompany = graph.addVertex("CompanyName","Company") 
==>v[4] 
gremlin> vUser1.addEdge('visits',vCompany,'pageVisit',10) 
==>e[6][0-visits->4] 
gremlin> vUser2.addEdge('visits',vCompany,'pageVisit',20) 
==>e[7][2-visits->4] 
gremlin> g = graph.traversal() 
==>graphtraversalsource[tinkergraph[vertices:3 edges:2], standard] 
gremlin> g.V(vCompany).inE('visits').values('pageVisit').sum() 
==>30 
+0

J'utilise Rexster pour ajouter le nombre de pageVisit, il est donc économiser en tant que chaîne. Comment puis-je utiliser l'opérateur sum() avec des valeurs de chaîne? –

+0

Je ne pense pas que le stocker comme une chaîne est une bonne idée. Vous devez stocker les données dans son type natif. Convertissez cette chaîne en nombre lorsque vous l'écrivez dans la base de données. Notez également que cette réponse est dans la syntaxe TinkerPop 3.x et qu'il n'y a pas de Rexster dans TinkerPop 3.x - vous utiliseriez plutôt le remplacement de Rexster, Gremlin Server: http://tinkerpop.apache.org/docs/3.1.1-incubating/reference/# gremlin-server –