Valuemap возвращает массив

В Tinkerpop3 valueMap возвращает массив, как я могу получить реальную пару ключ-значение (без массива)?

gremlin> Gremlin.version()
==>3.0.1-incubating

:> def trav = g.V().hasLabel('Group'); trav.valueMap()
==>{joinTime=[2016-12-05T22:27:01.088Z], groupId=[9de5-45cf-b40d-e357b40e87b1], mCanInvite=[true]}

:> def trav = g.V().hasLabel('Group'); trav.local(properties().group().by(key()).by(value()))
==>{joinTime={2016-12-05T22:27:01.088Z=1}, groupId={9de5-45cf-b40d-e357b40e87b1=1}, mCanInvite={true=1}

4 ответа

Это ожидаемое поведение. См. http://tinkerpop.apache.org/docs/current/reference/

Если вы не хотите, чтобы значение было заключено в массив, добавьте .by(unfold()) к valueMap()

В твоем случае

def trav = g.V().hasLabel('Group');
trav.valueMap().by(unfold());

Теперь вы можете использовать.elementMap()и он делает то же самое, что и.valueMap(true)за исключением того, что он не возвращается с массивами.

Вы можете попробовать использовать select, он возвращает пары ключ-значение. Например:

g.V().hasLabel('Group').as('name','count')
    .select('name','count')
    .by('groupName')
    .by(outE('contains').count())

результат будет примерно таким:

[{'name':'group1', 'count':10},...]

name представляет значение свойства groupName, count - сколько у ребер есть группа.

Я столкнулся с теми же проблемами, которые я не смотрел. Я решил использовать приведенные ниже запросы.

      g.V().hasLabel('user').project('id','firstName','age','userid',).by('id').by('firstName').by('age').by('userid')

Результат :

      [
  {
    "id": "thomas",
    "firstName": "Thomas",
    "age": 44,
    "userid": 1
  },
  {
    "id": "mary",
    "firstName": "Mary",
    "age": 39,
    "userid": 2
  }
]

Примечание. Это вернет ошибку, если вершина не имеет свойства запроса. В моем случае Azure Cosmos DB Gremlin API все мои документы в качестве свойств.

при попытке запросить базу данных Cosmos db свойства .ValueMap работают, но возвращают массив

      g.V().hasLabel('user').valueMap('firstName')

Результат:

      [
  {
    "id": [],
    "firstName": [
      "Thomas"
    ]
  },
  {
    "id": [],
    "firstName": [
      "Mary"
    ]
  }
]
Другие вопросы по тегам