【发布时间】:2022-11-25 07:09:07
【问题描述】:
环境:
- 节点 16
- 用于 node.js/Javascript 的 Gremlin
- 亚马逊海王星数据库
目标是列出具有一个标签的所有顶点与另一个标签的所有顶点之间的所有边,提供顶点的 elementMaps()。
以下是我迄今为止实现的最接近的近似值:
g.V().has('Customer', 'name', 'Customer').as('out').outE('HAS').as('edge').inV().hasLabel('Workstream').as('in').select('out', 'edge', 'in').toList()
这会产生以下输出(显示单个项目):
[{
out: Vertex {
id: 'bac24101-555a-e70b-66b1-434c5b2bb4fe',
label: 'Customer',
properties: undefined
},
edge: Edge {
id: '74c24101-55a9-3421-029b-1ddd68178cfd',
label: 'HAS',
outV: [Vertex],
inV: [Vertex],
properties: {}
},
in: Vertex {
id: 'b8c24101-5548-f39e-70c9-a9bd126e05b2',
label: 'Workstream',
properties: undefined
}
}]
这不会给我边或顶点的 elementMap,但它是我可以使用的格式。所需的输出是:
[{
edge: {
elementMapOfEdge,
outV: { elementMapOfOutVertex },
inV: { elementMapOfInVertex },
}
}]
注意
g.V().has('Customer', 'name', 'Customer').dedup().by('name').outE('HAS').as('edge').inV().hasLabel('Workstream').select('edge').elementMap().toList()
给我边的 elementMap 但不是传入或传出顶点。 dedup() 步骤解决了顶点中的重复名称,这是目前的数据卫生问题。
奇怪的是,边的 elementMapping 将顶点标签从“outV”和“inV”更改为“OUT”和“IN”——我假设是因为这些值不再是 Vertex 对象,而是普通的 JS 对象。
关于步骤标签等,我更关心功能而不是样式。目标是实现预期的结果,而不是在这一点上与 Gremlin 完美地惯用——尽管两者都实现会很棒!
【问题讨论】:
标签: javascript node.js gremlin amazon-neptune