【问题标题】:gremlin filter on Hashmap property without using a lambda不使用 lambda 的 Hashmap 属性上的 gremlin 过滤器
【发布时间】:2023-04-10 17:38:01
【问题描述】:

如果我在图形数据库中有一个顶点,其中一个属性是地图,有没有办法在不使用 lambda 的情况下过滤地图的属性?

像这样创建顶点:

gremlin> v = graph.addVertex(label, 'LABEL')
==>v[68]
gremlin> g.V(68).property('prop', [ key: 'val' ])
==>v[68]
gremlin> g.V(68).valueMap()
==>{prop=[{key=val}]}

有没有办法在不使用 lambda 的情况下通过 prop.key == 'val' 过滤顶点?

 gremlin> g.V().filter{ it.get().values('prop').next().get('key') == 'val' }

【问题讨论】:

    标签: neo4j orientdb graph-databases gremlin tinkerpop3


    【解决方案1】:

    给你:

    gremlin> g = TinkerGraph.open().traversal()
    ==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
    gremlin> g.addV('LABEL').
    ......1>     property('prop', [ key: 'val' ]).
    ......2>   addV('LABEL').
    ......3>     property('prop', [ key: 'val2' ]).iterate()
    gremlin> g.V().valueMap(true)
    ==>[prop:[[key:val]],id:0,label:LABEL]
    ==>[prop:[[key:val2]],id:2,label:LABEL]
    gremlin> g.V().filter(values('prop').select('key').is('val'))
    ==>v[0]
    gremlin> g.V().filter(values('prop').select('key').is('val2'))
    ==>v[2]
    

    【讨论】:

      【解决方案2】:

      如果您只想找到所有具有 'prop'='val' 的顶点,您可以使用 gremlin has 步骤 (documentation here) 执行此操作,您的查询将如下所示:

      g.V().has('prop', 'val')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-03
        • 2021-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多