Gremlin用例-Int属性和coalesce()

Gremlin用例-Int属性和coalesce(),gremlin,tinkerpop,Gremlin,Tinkerpop,存储为整数的顶点属性可以递增和递减吗?如果是,怎么做 对于固定数据集,coalesce()是否总是返回相同的项?有没有可能将其随机化或以任何其他方式进行?例如,对于所有传入的顶点,每次选择一个随机顶点,即使数据集本身没有更改 存储为整数的顶点属性可以递增和递减吗 您可以使用sack(): 现在让我们更仔细地看看遍历,您已经在上面看到了它的作用: g.V(). sack(assign). by('counter'). sack(sum). by(constant(1)).

存储为整数的顶点属性可以递增和递减吗?如果是,怎么做

  • 对于固定数据集,coalesce()是否总是返回相同的项?有没有可能将其随机化或以任何其他方式进行?例如,对于所有传入的顶点,每次选择一个随机顶点,即使数据集本身没有更改

  • 存储为整数的顶点属性可以递增和递减吗

    您可以使用sack():

    现在让我们更仔细地看看遍历,您已经在上面看到了它的作用:

    g.V().
      sack(assign).
        by('counter').
      sack(sum).
        by(constant(1)).
      property('counter', sack()).
      valueMap()
    
    因此,对于每个顶点,使用
    assign
    在其“sack”中放置一个值,
    by('counter')
    调制器将该赋值定义为“counter”属性的值(在我的示例中,该属性在前面初始化为零)。然后,使用
    sack(sum)
    我们定义如何将计数器
    增加(常量(1))
    或“增加1”(即,取sack中的值,与1相加,并将该值存储在sack中)。最后,我们从sack中取出值,并用
    属性('counter',sack())
    覆盖原始的“counter”属性

    对于固定数据集,coalesce()是否总是返回相同的项

    大多数与“元素顺序”有关的问题必须推迟到底层图形系统。如果您的图形数据库以确定的顺序返回元素,那么您的小精灵应该。如果您需要确定一个订单,并有一个完全可移植的查询,那么您应该在Gremlin中包括使用
    order()
    步骤

    我相信coalesce将始终与第一次遍历一起返回值,因此:

    g.V().coalesce(outE(), inE())
    
    如果当前顶点具有传出边,则始终会得到
    outE()
    的结果。要获得一个随机选择,您可以执行以下操作:

    g.V().coalesce(outE().fold().coin(0.5), inE().fold()).unfold()
    
    这有点有效……换句话说,对于
    outE()
    返回某些内容的情况,50%的时间它什么也不返回,因此允许
    inE()
    选项工作。我不确定你到底想要什么,但也许你可以从等式中得到
    coalesce()
    ,只需使用简单的
    coin()
    sample()
    ,等等来解决你的问题

    存储为整数的顶点属性可以递增和递减吗

    您可以使用sack():

    现在让我们更仔细地看看遍历,您已经在上面看到了它的作用:

    g.V().
      sack(assign).
        by('counter').
      sack(sum).
        by(constant(1)).
      property('counter', sack()).
      valueMap()
    
    因此,对于每个顶点,使用
    assign
    在其“sack”中放置一个值,
    by('counter')
    调制器将该赋值定义为“counter”属性的值(在我的示例中,该属性在前面初始化为零)。然后,使用
    sack(sum)
    我们定义如何将计数器
    增加(常量(1))
    或“增加1”(即,取sack中的值,与1相加,并将该值存储在sack中)。最后,我们从sack中取出值,并用
    属性('counter',sack())
    覆盖原始的“counter”属性

    对于固定数据集,coalesce()是否总是返回相同的项

    大多数与“元素顺序”有关的问题必须推迟到底层图形系统。如果您的图形数据库以确定的顺序返回元素,那么您的小精灵应该。如果您需要确定一个订单,并有一个完全可移植的查询,那么您应该在Gremlin中包括使用
    order()
    步骤

    我相信coalesce将始终与第一次遍历一起返回值,因此:

    g.V().coalesce(outE(), inE())
    
    如果当前顶点具有传出边,则始终会得到
    outE()
    的结果。要获得一个随机选择,您可以执行以下操作:

    g.V().coalesce(outE().fold().coin(0.5), inE().fold()).unfold()
    

    这有点有效……换句话说,对于
    outE()
    返回某些内容的情况,50%的时间它什么也不返回,因此允许
    inE()
    选项工作。我不确定你到底想要什么,但也许你可以从方程中得到
    coalesce()
    ,只需使用简单的
    coin()
    sample()
    ,等等来解决你的问题。

    第一个很好用,谢谢。第二,我认为我对coalesce()的使用是不正确的。我所要做的就是,从一个顶点的所有传入边中,随机选择一条。所以我可以用g.V().has('id',).inE().order().by(shuffle.next()来实现这一点。有更好的方法吗?这种方法不起作用。考虑我前面的问题,在AcLeDyBuffTebug属性中,我只能得到其中的一个(从3、4或任意数量的用户中随机选择):如果你这样做,它就不工作了:<代码>((in)(喜欢)。在哪里((跟随者))。()(按(Sffffle))< /代码>或<代码>((in)(喜欢)。在哪里((追随者)内)。样本(1))这两个选项中的任何一个都应该随机选择一个(我想你可以把
    折叠()
    放在最后,因为你只想要一个(除非您希望将其中一个问题包装在
    列表中
    问题在于,另一个遍历抛出了错误,它没有映射到值。我建议您使用当前在这两个问题之间失败的查询,并使用复制您看到的问题的示例Gremlin脚本开始一个新问题。很抱歉,这确实是一个错误。)否则很难理解这个问题。第一个很好,谢谢。第二个,我认为我对coalesce()的使用是不正确的。我要做的是,在一个顶点的所有传入边中,随机选择一条。因此我可以使用g.V().has('id',).inE().order().by(shuffle)。next()来完成这项工作我有一个更好的方法。这个方法不起作用。在我前面的问题中,在AdvdByWestRead属性中,我只能得到其中的一个(从3、4或任意数量的用户中随机选择):如果你这样做,它就不起作用了:<代码>((in)(喜欢)。在哪里(“跟随者”)。((Sffffle))< /代码>或<代码>。。其中(在('followers'))。示例(1))