如何获取具有ID的所有属性

时间:2019-11-22 14:22:29

标签: kotlin graph-databases gremlin amazon-neptune

我是所有图形数据库人员的新手,并且在进行一些基本查询时遇到了困难。 我正在使用Gremlin和Kotlin连接到AWS Neptune。 我想获取所有的顶点属性,包括ID。

我添加了一个顶点:

g.addV("foo")
    .property("name", "Foo 1")
    .next()

并检索我尝试过的属性:

g.V()
    .hasLabel("foo")
    .valueMap<String>()
    .by(unfold<String>())
    .forEach {
        // val name = it["name"] -> works great!
        // val id = it["id"] -> doesn't exist
    }

在第一种方法中,我为每个项目都获得了一个映射,但是该映射不包含ID。

g.V()
    .hasLabel("foo")
    .forEach {
        // it is an ReferenceVertex that has an ID!
        val name = it.property<String>("name") // This returns an EmptyVertexProperty, so I can't read the name
    }

我正在使用

<dependency>
    <groupId>org.apache.tinkerpop</groupId>
    <artifactId>gremlin-driver</artifactId>
    <version>3.4.4</version>
</dependency>

奖励问题

我无法弄清楚(在文档中也找不到)valueMapunfold方法上的泛型是做什么的。 Kotlin不允许我省略它们(就像我在某些Java代码中看到的那样??),但是例如,将它们更改为Int并不会改变这些示例的结果……所以什么是为了? D:

谢谢!

1 个答案:

答案 0 :(得分:0)

如果要获取具有所有其他属性的ID,则需要运行valueMap().with(WithOptions.tokens),也可以使用elementMap()