我的客户顶点具有4个属性。如果我需要这些属性的地图表示,可以通过执行
g.V('customerId').valueMap('firstName', 'middleName', 'lastName', 'age')
但是,如果我需要地图中除age
之外的所有属性,是否可以仅指定被忽略属性的列表?像
g.V('customerId').valueMap(not('age'))
我要避免指定所有必需的属性。
答案 0 :(得分:2)
没有内置步骤。
您可以通过展开每个地图,过滤不需要的属性(键)并重新对其进行重新组合来实现此目标:
g.V().valueMap().local(unfold()
.where(select(keys).is(without(["age","prop1","prop2"])))
.group().by(select(keys)).by(select(values)))
答案 1 :(得分:2)
Kfir提供的答案很好。另一种方法在我的脑海中更加直接,因为您不必先创建一个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
。