我想将顶点和边的属性设置为列表值。我正在使用janusgraph。小鬼蟒
3 回答
这是一个使用 gremlin-python 创建一个顶点的示例,该顶点使用属性 key 存储为 Set 的 3 个值mySet
。请注意,在使用 gremlin-python 时,某些 Gremlin 步骤的名称后带有下划线,以避免与同名的 Python 步骤发生冲突。
result = (
g.addV('test').
property(Cardinality.set_,"mySet",1).
property(Cardinality.set_,"mySet",2).
property(Cardinality.set_,"mySet",3).
valueMap().
next()
)
print(result)
{'mySet': [1, 2, 3]}
在 JanusGraph 中,建议预先创建模式。LIST 基数意味着您需要一个数组值键。
在 gremlin 控制台中,您可以执行以下操作:
mgmt = graph.openManagement(); mgmt.makePropertyKey('myProperty').dataType(String).cardinality(LIST).make(); mgmt.commit();
然后在 gremlin 中链接属性函数:
g.addV().property('myProperty', 'val1).property('myProperty','val2')
如果您想动态创建模式,您可以在一个 gremlin 调用中完成此操作。您提供了一个以前从未使用过的新属性键(现有键默认具有基数 SINGLE 并且不接受多个值)。您必须告知 gremlin 您所有新插入的值的基数,如下所示:
g.addV().property(list,'myNewProperty', 'val1').property(list,'myNewProperty','val2')
请注意我每次都必须添加 list 关键字。
如果您通过 gremlin-python 执行此操作,则第二个选项应该像本机代码一样直接工作。第一个选项要求您通过客户端连接发送模式命令:
from gremlin_python.driver.client import Client
client = Client('ws://urlToServer:8182/gremlin','g')
console_command_string = """mgmt = graph.openManagement(); mgmt.makePropertyKey('myProperty').dataType(String).cardinality(LIST).make(); mgmt.commit();"""
client.submit(console_command_string)
client.close()
通过将属性基数设置为 set 或 list,您可以将多个值附加到属性键。
找到下面的 java 代码片段。
janusGraphVertex.property(VertexProperty.Cardinality.set, "hobbies", "cricket");
janusGraphVertex.property(VertexProperty.Cardinality.set, "hobbies", "football");
janusGraphVertex.property(VertexProperty.Cardinality.set, "hobbies", "tennis");
参考链接。