Search code examples
gremlintinkerpopamazon-neptune

How can I sort my results by property length?


I have these user vertices:

g.addV("user").property(single,"name", "bob")
g.addV("user").property(single,"name", "thomas")
g.addV("user").property(single,"name", "mike")

I'd like to return these sorted by the length of the name property.

bob
mike
thomas

Is this possible with Gremlin on AWS Neptune without storing a separate nameLength property to sort on?


Solution

  • Currently the Gremlin language does not have a step that can return the length of a string. This is something that may be added to Gremlin in a future version, possibly in the 3.6 release. You can of course do it using closures (in-line code) but many hosted TinkerPop graph stores, including Amazon Neptune, do not allow arbitrary code blocks to be run as part of Gremlin queries. At this moment in time this will need to be handled application side when using Neptune, or as you suggest, using a nameLength property. This is an area where the TinkerPop community recognizes some additional steps are needed and does plan to prioritize this work.