Vit*_*lyT 5 gremlin titan tinkerpop tinkerpop3
非常基本的问题,
我刚刚将我的Titan从0.54升级到Titan 1.0 Hadoop 1/TP3 3.01版本.
我遇到删除值的问题
Property key: Cardinality.LIST/SET
Run Code Online (Sandbox Code Playgroud)
也许这是由于升级过程或仅仅是我的TP3误解.
// ----- CODE ------:
tg = TitanFactory.open(c);
TitanManagement mg = tg.openManagement();
//create KEY (Cardinality.LIST) and commit changes
tm.makePropertyKey("myList").dataType(String.class).cardinality( Cardinality.LIST).make();
mg.commit();
//add vertex with multi properties
Vertex v = tg.addVertex();
v.property("myList", "role1");
v.property("myList", "role2");
v.property("myList", "role3");
v.property("myList", "role4");
v.property("myList", "role4");
Run Code Online (Sandbox Code Playgroud)
现在,我想删除所有值"role1,role2 ...."
// iterate over all values and try to remove the values
List<String> values = IteratorUtils.toList(v.values("myList"));
for (String val : values) {
v.property("myList", val).remove();
}
tg.tx().commit();
Run Code Online (Sandbox Code Playgroud)
// ----------------预期结果----------:空顶点属性
但遗憾的是结果并非空洞:
System.out.println("Values After Delete" + IteratorUtils.toList(v.values("myList")));
Run Code Online (Sandbox Code Playgroud)
// ------------------- OUTPUT --------------:
删除后,值仍然很明显!
15:19:59,780 INFO ThriftKeyspaceImpl:745 - Detected partitioner org.apache.cassandra.dht.Murmur3Partitioner for keyspace titan
15:19:59,784 INFO Values After Delete [role1, role2, role3, role4, role4]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
您没有使用更高级别的Gremlin API执行图遍历,但您目前正在使用较低级别的图API来改变图形.for在Gremlin中做循环通常是反模式.
根据TinkerPop 3.0.1 Drop Step文档,您应该可以从Gremlin控制台执行以下操作:
v = g.addV().next()
g.V(v).property("myList", "role1")
g.V(v).property("myList", "role2")
// ...
g.V(v).properties('myList').drop()
Run Code Online (Sandbox Code Playgroud)
property(key, value)将设置顶点上的属性值(javadoc)。您应该做的是获取VertexProperties ( javadoc )。
for (VertexProperty vp : v.properties("name")) {
vp.remove();
}
Run Code Online (Sandbox Code Playgroud)
@jbmusso 提供了一个可靠的解决方案,使用GraphTraversal替代。
| 归档时间: |
|
| 查看次数: |
2129 次 |
| 最近记录: |