为了账号安全,请及时绑定邮箱和手机立即绑定

Neptune、Python、Gremlin:使用值数组更新图形顶点中的属性

Neptune、Python、Gremlin:使用值数组更新图形顶点中的属性

跃然一笑 2022-11-24 14:52:27
使用 Amazon Neptune 作为 GraphDB,我正在尝试更新某些顶点的属性以包含值列表。本指南中的基本 gremlin 示例:// Add a list as a property valueg.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'))})但没有一个在工作。
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

我认为您必须在单独的property步骤中插入每个值


像这样:


g.V().has('code', 'AUS').as('airport').

  out().values('code').as('code').select('airport').

  property(set, 'places', select('code'))


编辑:


我在 AWS用户指南中看到不支持列表基数。因此最接近的解决方案是使用set基数。


Neptune 支持集合基数和单一基数。如果未指定,则选择设置基数。这意味着如果您设置一个属性值,它会向该属性添加一个新值,但前提是它尚未出现在值集中。这是 Set 的 Gremlin 枚举值。不支持列表。有关属性基数的更多信息,请参阅 Gremlin JavaDoc 中的顶点主题。


示例:https ://gremlify.com/9v


查看完整回答
反对 回复 2022-11-24
  • 1 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信