Как указать свойства игнорировать в valueMap с Gremlin? - PullRequest
0 голосов
/ 12 октября 2019

Моя вершина клиента имеет 4 свойства. Если мне нужно представление этих свойств на карте, я могу получить их, выполнив

g.V('customerId').valueMap('firstName', 'middleName', 'lastName', 'age')

Но, если мне нужны все свойства, кроме age на моей карте, есть ли способ указать только список игнорируемыхсвойства? Что-то вроде

g.V('customerId').valueMap(not('age'))

Я хочу не указывать все необходимые свойства.

Ответы [ 2 ]

2 голосов
/ 12 октября 2019

Ответ Кфир хороший. Другой способ немного более прямолинеен, потому что у вас нет затрат на то, чтобы сначала создать Map, деконструировать его для фильтрации, а затем собрать обратно:

gremlin> g.V().map(properties().hasKey(without('age')).group().by(key()).by(value()))
==>[name:marko]
==>[name:vadas]
==>[name:lop,lang:java]
==>[name:josh]
==>[name:ripple,lang:java]
==>[name:peter]

Этот подход простовзрывает вершины в свойствах, фильтрует ключ, который вам не нужен, и затем строит Map из этого.

2 голосов
/ 12 октября 2019

Для него нет встроенного шага.

Вы можете достичь этой цели, развернув каждую карту, отфильтровав ненужные свойства (ключи) и снова перегруппировав ее:

g.V().valueMap().local(unfold()
    .where(select(keys).is(without(["age","prop1","prop2"])))
    .group().by(select(keys)).by(select(values)))
...