【问题标题】:Returning edge properties in gremlin using tree function使用树函数在 gremlin 中返回边缘属性
【发布时间】:2020-07-28 13:48:24
【问题描述】:

查询

g.withSack(0).V().hasLabel('A').has('label_A','A').union(__.emit().repeat(sack(sum).by(constant(1)).in()),emit().repeat(sack(sum).by(constant(-1)).out())).project('level','properties').by(sack()).by(tree().by(valueMap().by(unfold())).unfold().unfold())

输出

[
    {
        "level": 0,
        "properties": {
            "key": {
                "label_A": "A"
            },
            "value": {}
        }
    },
    {
        "level": 1,
        "properties": {
            "key": {
                "label_A": "A"
            },
            "value": {
                "{label_B="B"}": {}
            }
        }
    },
    {
        "level": 2,
        "properties": {
            "key": {
                "label_A": "A"
            },
            "value": {
                "{label_B=B}": {
                    "{label_C=C}": {}
                }
            }
        }
    },

查询只返回节点的属性。请修改查询,使其分别以树格式返回节点属性和关系。

【问题讨论】:

    标签: graph gremlin janusgraph


    【解决方案1】:

    如果您想获得需要通过它们的边的属性,请将outin 步骤拆分为outE().inV()inE().outV()。然后树步骤会将它们考虑在内。

    此外,如果您想在边缘指定返回值,您可以在树步骤中添加第二个 by 调制器。

    g.withSack(0).V().hasLabel('material').
      has('label_A', 'A').union(
        __.emit().repeat(sack(sum).
            by(constant(1)).
          inE().outV()),
        emit().repeat(sack(sum).
            by(constant(-1)).
          outE().inV())
      ).
      project('level', 'properties').by(sack()).
        by(tree().
            by(valueMap().by(unfold())).
            by(valueMap()))
    

    示例:https://gremlify.com/rixszg1ougl

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多