【问题标题】:Gremlin to update meta properties of existing vertexGremlin 更新现有顶点的元属性
【发布时间】:2021-05-29 23:56:10
【问题描述】:

我正在用它的属性创建一个顶点。每个属性都有其元属性

// Define schema in Gemlin Console

// Create vertex
mgmt.makeVertexLabel('v01').make()

// Create properties
mgmt.makePropertyKey('p01').dataType(String.class).cardinality(LIST).make()

// Create meta-properties
mgmt.makePropertyKey('created_by').dataType(String.class).cardinality(SINGLE).make()
mgmt.makePropertyKey('created_date').dataType(String.class).cardinality(SINGLE).make()
mgmt.makePropertyKey('modified_by').dataType(String.class).cardinality(SINGLE).make()
mgmt.makePropertyKey('modified_date').dataType(String.class).cardinality(SINGLE).make()

// Insert data
p.addV('v01').
    property(list, 'p01', 'pvalue01', 'created_by', 'system01' ,'created_date', new Date(), 'modified_by', '', 'modified_date')

元属性信息:

created_by: 创建属性值的系统名

created_date:创建值的时间戳

modified_by: 更新属性值的系统名

modified_date: 更新值的时间戳

将属性值pvalue01 添加到属性p01 时,只有created_bycreated_date 有值,而modified_bymodified_date 有空字符串。

如果将新值pvalue02 添加到属性p01,我应该如何更新pvalue01 的元属性(modified_bymodified_date)?

【问题讨论】:

    标签: groovy gremlin janusgraph


    【解决方案1】:

    要更改元属性的值,您只需找到它并使用property 步骤来更改其值。例如

    g.V().hasLabel('v01').
        properties('p01').
        property('modified_date',new Date())
    

    如果您需要更新多个属性,property 步骤返回的值是顶点属性,因此您可以将它们链接在一起。

    g.V().hasLabel('v01').
        properties('p01').
        property('modified_date',new Date()).
        property('modified_by','Me')
    

    更新添加了一个示例,说明在使用 list 基数时如何工作:

    gremlin> g.addV('V01').
               property(list,'mylist','pv1').
               property(list,'mylist','pv2')
    ==>v[60870]
    
    gremlin> g.V().hasLabel('V01').propertyMap()
    ==>[mylist:[vp[mylist->pv1],vp[mylist->pv2]]]
    
    gremlin> g.V().hasLabel('V01').properties('mylist')
    ==>vp[mylist->pv1]
    ==>vp[mylist->pv2]
    
    gremlin> g.V().hasLabel('V01').properties('mylist').hasValue('pv2')
    ==>vp[mylist->pv2]
    
    gremlin> g.V().hasLabel('V01').properties('mylist').hasValue('pv2').property('meta',123)
    ==>vp[mylist->pv2]
    
    gremlin> g.V().hasLabel('V01').properties('mylist').hasValue('pv2').properties()
    ==>p[meta->123]         
    

    【讨论】:

    • 如果p01=[pvalue01, pvalue02],如何更新具体值的元属性?
    • 我在答案中添加了一个示例。
    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2019-07-18
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多