【问题标题】:How get both the vertices and edge value in neptune db如何在海王星数据库中同时获取顶点和边值
【发布时间】:2020-01-17 16:27:21
【问题描述】:

我是 Neptune DB 的新手,我创建了顶点并将两个顶点与边连接起来,并为边和值赋予了一些属性

我想同时检索边缘和顶点属性值

有人可以为此提供一个示例查询吗?

提前致谢。

例如: 顶点:p1、P2、p3 边 E1-连接 P1 和 P2,E2-连接 P2 和 P3 顶点属性:名称 边属性:关系

现在我需要取出连接到 P1 的所有顶点的名称和关系

【问题讨论】:

  • 你的问题很模糊。您能否提供示例图、起始顶点或属性以及预期结果?

标签: gremlin amazon-neptune


【解决方案1】:

path step 就是你要找的。使用by 调制器,您可以以循环方式选择属性,即顶点边缘。

首先定位 p1 顶点:

g.V().hasLabel("testV").has("name","p1")

使用“关系”属性沿边重复遍历:

.repeat(outE("testE").has("relation").inV()).until(__.not(outE("testE")))

获取遍历path(或tree),并使用by调制器为顶点选择“名称”,为边选择“关系”:

.path().by("name").by("relation")

查看字符串数组中的结果:

.local(unfold().fold())

请注意,此遍历不处理循环,但这是另一个问题。


如果您只需要一级邻居,您可以采取不同的方法:

g.V().hasLabel("testV").has("name","p2").bothE()
.project("relation","name")
.by(values("relation"))
.by(otherV().values("name"))

【讨论】:

  • 我可以链接这个吗
  • gV().hasLabel("testV").has("name","p1").bothE().otherV().path().by("name").by (“关系”)
  • 哪一个最好,有人能解释一下原因吗?
  • 当然可以,但是你只会得到一级邻居,所以在你的例子中它只会是 p2,你不会得到 p3。
  • 请打开一个新问题并分享有关您的图中有多少个顶点和边、多少个一级邻居、数据库引擎版本等信息。路径很昂贵,所以最好使用我的其他建议的方法。
猜你喜欢
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多