2016-05-23 8 views
2

Ich versuche, einen Teilsatz der Ergebnisse unter Verwendung range() für Seitenumbruch in meiner App zurückgeben. Ich muss auch die Gesamtzahl der Datensätze im Gesamtergebnis als Teil der Antwort zurückgeben. Eine Antwort sollte wie folgt aussehen:Gremlin: Ergebniszähler mit Ergebnis zurückgeben

{ 
    postcount: 239, 
    posts: [ 
    { 
     postID: 1, 
     postTitle:'First post' 
    }, 
    { 
     postID: 2, 
     postTitle:'Second post' 
    }, 
    { 
     postID: 3, 
     postTitle:'Third post' 
    } 
    ] 
} 

Ich habe so etwas wie diese Arbeit ohne Glück versucht zu machen:

g.V().hasLabel('post').as('postcount','posts').select('postcount','posts').by(__.count()).by(__.range(0,2).valueMap())

Das hängt eine postcount = 1 Eigenschaft auf jedes Element. Wie stelle ich das ein?

Antwort

1

Antwort auf die Gremlin-Users list pro Daniel Kuppitz gefunden:

In 3.2.0:

> g.V().hasLabel("person").fold().project("users","userCount").by(range(local, 
> 0, 2)).by(count(local)) 

Prior 3.2.0:

g.V().hasLabel("person").fold().as("users","userCount").select("users","userCount").by(range(local, 
> 0, 2)).by(count(local)) 
1

Sie könnten union Schritt zu erreichen, was Sie tun möchten. Beispiel:

g.V().hasLabel("post").union(
       __.select("postcount").by(__.count()), // postcount property 
       __.range(0,2).valueMap() // your range 
      ) //end of union 

Für mehr Informationen, überprüfen docs

+0

'Union' wie der richtige Ansatz scheint, aber ich bin immer noch mit der Syntax zu kämpfen. Ich habe Ihr Beispiel versucht, aber ich habe 'Die Traversierungsstrategien sind abgeschlossen und die Traversierung kann nicht mehr moduliert werden'. Ich habe auch folgendes versucht: 'gV(). HasLabel (" post "). As (" postcount "," post "). Union (wähle (" postcount "). Durch (__. Count()), wähle (" post "). by (__. range (0,2) .valueMap())) aber es gibt post zurück, count = 1, post, count = 1 jede Zeile. – Fook

+0

Ah, Ihrem Beispiel fehlt ein '_' vor' .count() '. Es gibt jedoch nur alle meine Posts ohne Rücksicht auf 'Bereich' aus und enthält keine Zählung. Ich bin mir nicht sicher, warum das nicht funktioniert, weil ich dem Gedankenprozess folge und es scheint, als müsste es. Ich führe das in der Konsole, wenn es darauf ankommt. – Fook

1

Man könnte es brechen in zwei Abfragen:

pCount = g.V().hasLabel("post").count().next(); 
pList = g.V().hasLabel("post").range(0,2).valueMap().toList(); 
map = ["postcount": pCount, "posts": pList]