多个键值不打印

时间:2014-03-22 12:29:38

标签: titan

这里我为密钥city

设置了多个值
Vertex v = g.addVertex(null);
TitanVertex v2=(TitanVertex)v;
v2.addProperty("city", "NY");
v2.addProperty("city", "WS");
v2.addProperty("city", "PER");
g.commit(); 

我在这里索引

g.makeKey("city").dataType(String.class).indexed("search", Vertex.class).make();

当我在下面做的时候

TitanVertex tv = (TitanVertex)vertex;
Iterator<TitanProperty> iterator = tv.getProperties("city").iterator();
while(iterator.hasNext())
{
   TitanProperty next = iterator.next();
   System.out.println(next.getValue());
}

它只打印PER但不打印NY&#39; WS`。为什么呢?

1 个答案:

答案 0 :(得分:1)

您似乎需要使用.list()来创建多值键(否则默认为单值键;请参阅docs)。

不幸的是,我不确定您是否可以在外部索引中使用多值键:

gremlin> g.makeKey("city").list().dataType(String.class).indexed("search", Vertex.class).make();
Only standard index is allowed on list property keys

使用标准索引:

gremlin> g.makeKey("city").list().dataType(String.class).indexed("standard", Vertex.class).make();
==>city
gremlin> v = g.addVertex(null)
==>v[4080012]
gremlin> v.addProperty("city","NY")
==>e[2esPj-h7oE-h4][4080012-city->NY]
gremlin> v.addProperty("city","WS")
==>e[2esPl-h7oE-h4][4080012-city->WS]
gremlin> v.addProperty("city","PER")
==>e[2esPn-h7oE-h4][4080012-city->PER]
gremlin> g.commit()
==>null
gremlin> v.map
==>{city=[NY, WS, PER]}