python - Neptune、Python、Gremlin:使用值数组更新图顶点中的属性
问题描述
使用 Amazon Neptune 作为 GraphDB,我正在尝试更新某些顶点的属性以包含值列表。本指南中的基本 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'))
编辑:
我在 AWS用户指南中看到不支持列表基数。因此最接近的解决方案是使用set
基数。
Neptune 支持集合基数和单基数。如果未指定,则选择设置基数。这意味着如果您设置一个属性值,它会向该属性添加一个新值,但前提是它尚未出现在值集中。这是 Set 的 Gremlin 枚举值。不支持列表。有关属性基数的更多信息,请参阅 Gremlin JavaDoc 中的顶点主题。
推荐阅读
- c++ - Fortran 2018 混合 C++ 空指针段错误
- java - 我正在尝试通过 httpclient(自动化框架)自动化 graphQA api。但收到 400 错误
- python - 如何在python中按顺序列表对多个列表进行排序?
- java - Android 应用没有互联网连接 - 无需权限
- android - QoS=1 与 MqttAsyncClient 订阅未命中消息
- python - 多处理并非在所有 CPU 内核上运行
- javascript - 刷新 div 后 CSS 样式不起作用
- c# - Asp.net Core 2.1 日志记录
- javascript - 如何在电子 js 中创建模态?(javascript、html、css)
- laravel - 当我在 laravel 中更改与 auth 链接的默认表“用户”时,它会导致我的 API 出现未经授权的结果,