【问题标题】:How to update several vertex properties on Gremlin?如何更新 Gremlin 上的几个顶点属性?
【发布时间】:2011-10-06 16:37:16
【问题描述】:

我想在一个顶点上添加几个属性。我可以这样做:

g.v(1).firstname='Marko'
g.v(1).lastname='Rodriguez'

但是如何在单个查询中使用以下哈希 {firstname:'Marko', lastname:'Rodriguez'} 添加这些属性?

【问题讨论】:

    标签: neo4j graph-databases


    【解决方案1】:

    您可以构建一个可行的 SideEffect 管道。在简单的情况下,这样做:

    g.v(1)._().sideEffect{it.firstname='Marko'; it.lastname='Rodriguez'}
    

    或者,如果您只需要在一个节点上工作并拥有地图,您可以使用地图的each 方法:

    m = [firstname:'Marko', lastname:'Rodriguez']
    m.each{g.v(1).setProperty(it.key, it.value)}
    

    或者您可以在管道内执行此操作,其中您有一个带有您希望设置的值的哈希值。再一次,我们将使用 sideEffect 管道。因为闭包内部有一个闭包,我们需要将第一个闭包的it 的值别名为其他值,在本例中为tn,是“此节点”的缩写,因此它可以在第二个闭包中访问。 :

    g = new TinkerGraph()
    g.addVertex()
    g.addVertex()
    m = ['0': [firstname: 'Marko', lastname: 'Rodriguez'], '1': [firstname: 'William', lastname: 'Clinton']]
    g.V.sideEffect{tn = it; m[tn.id].each{tn.setProperty(it.key, it.value)}}
    

    这将产生以下结果:

    gremlin> g.v(0).map
    ==>lastname=Rodriguez
    ==>firstname=Marko
    gremlin> g.v(1).map
    ==>lastname=Clinton
    ==>firstname=William
    

    此方法的一个潜在问题是您需要记住顶点 ID 是字符串,而不是整数,因此请确保正确引用它们。

    【讨论】:

    • 谢谢Pridkett,我会尽快测试。但我认为会有一个更简单的解决方案。
    猜你喜欢
    • 2021-05-29
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2017-11-30
    • 2023-03-10
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多