【问题标题】:Gremlin Queries: How to exclude ID while including label in valuemap?Gremlin 查询:如何在 valuemap 中包含标签时排除 ID?
【发布时间】:2020-10-16 12:38:32
【问题描述】:

所以我有一个这样的 gremlin 查询:

g.V().hasLabel('Person').valueMap(true, 'name')

现在这将创建一个包含字段/列“标签”、“ID”和“名称”的值映射,但如何从中排除“ID”?

我只希望在结果中包含“标签”和“名称”。

非常感谢任何帮助,谢谢! :)

【问题讨论】:

    标签: database search graph gremlin tinkerpop


    【解决方案1】:

    你可以使用WithOptions来控制这个。

    这是使用航线数据集的示例

    gremlin> g.V('3').valueMap('city').with(WithOptions.tokens,WithOptions.ids)
    ==>[id:3,city:[Austin]]
    
    gremlin> g.V('3').valueMap('city').with(WithOptions.tokens,WithOptions.labels)
    ==>[label:airport,city:[Austin]]
    

    【讨论】:

    • 谢谢!我收到错误消息“No such property: WithOptions for class”,但是我想出了另一种方法来做到这一点:)
    • 您需要确保您是否从包含相关类和枚举的代码中执行此操作。您使用的是哪个 Gremlin 客户端?以 Java 为例,它位于此处org.apache.tinkerpop.gremlin.process.traversal.step.util.WithOptions
    • 如果您将查询作为字符串发送,则可能取决于您连接的后端数据库是否支持WithOptions
    【解决方案2】:

    使用 WithOptions 的另一个答案可能有效,但是当我尝试它时收到一条错误消息(我正在使用 API 将 gremlin 查询作为字符串发送,因此它可能是 API 的服务器端的错误) .

    但是,我想出了另一种方法。

    带标签:

    g.V().hasLabel('Person').project('label', 'name').by(label).by(values('name').fold())
    

    使用 ID:

    g.V().hasLabel('Person').project('id', 'name').by(id).by(values('name').fold())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多