首页 > 解决方案 > 如何获取所有带有 id 的属性

问题描述

我对所有图形数据库的东西都很陌生,而且我很难处理一些基本的查询。我正在使用 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,例如,不会改变这些示例的结果......那么它有什么用呢?丁:

提前致谢!

标签: kotlingraph-databasesgremlinamazon-neptune

解决方案


如果您想获得具有您需要运行的所有其他属性的 Id,valueMap().with(WithOptions.tokens)或者您可以使用elementMap().


推荐阅读