[将Amazon Neptune用作GraphDB,我正在尝试更新某些顶点的属性以包括值列表。此guide中的基本gremlin示例:
// Add a list as a property value
g.V().has('code','AUS').property('places',out().values('code').fold())
失败:
{
"requestId": "XXX",
"detailedMessage": "Unsupported property value type: java.util.ArrayList",
"code": "UnsupportedOperationException"
}
我也尝试添加list
修饰符
g.V().has('code','AUS').property(list, 'places',out().values('code').fold())
失败:
{
"requestId": "XXX",
"detailedMessage": "list cardinality for vertex property is not supported",
"code": "UnsupportedOperationException"
}
[如果由于某种原因python-gremlin或Amazon Neptune风味不支持将数组或列表作为属性值,则我可以选择一个将值连接成单个字符串的单个值。我尝试使用各种选项:
g.V().has('code','AUS').property('places',out().values('code').fold(0) {a,b -> a + b.length()})
或
g.V().has('code','AUS').property('places',out().values('code')map {join(",",it.get().value('code'))})
但没有一个起作用。
我认为您必须在单独的property
步骤中插入每个值
像这样:
g.V().has('code', 'AUS').as('airport').
out().values('code').as('code').select('airport').
property(set, 'places', select('code'))
EDIT:] >>
我在AWS user guide中看到不支持列表属性。因此,最接近的解决方案是使用set
基数。
Neptune支持设置基数和单个基数。如果未指定,则选择设置基数。这意味着,如果您设置属性值,则会向该属性添加新值,但前提是该值尚未出现在该值集中。这是Set的Gremlin枚举值。 不支持列表
。有关属性基数的更多信息,请参见Gremlin JavaDoc中的“顶点”主题。