基于聚合的日期顶点从不同的顶点获取标签

yhxst69z  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(341)
g.addV('l1').
    property(id, 12347).
    property('submit_time', new Date('Wed May14 10:00:00 PDT 2019')).
  addV('l1').
    property(id, 4522323).
    property('submit_time', new Date('Wed May15 11:00:00 PDT 2019')).
  addV('l1').
    property(id, 2355208312).
    property('submit_time', new Date('Wed May15 11:00:00 PDT 2019')).
  addV('l3').
    property(id, 45678).
    property('start_time', new Date('Fri Apr 24 07:01:36 PDT 2019')).
  addV('l3').
    property(id, 67892).
    property('start_time', new Date('Fri Apr 24 07:01:36 PDT 2019')).
  addV('l3').
    property(id, 678954).
    property('start_time', new Date('Fri Apr 26 23:01:36 PDT 2019')).
    property('condition', "somevalue").
  addE('e1').
    from(V(12347)).
    to(V(45678)).
  addE('e1').
    from(V(12347)).
    to(V(67892)).
  addE('e1').
    from(V(4522323)).
    to(V(678954)).
  addE('e1').
    from(V(2355208312)).
    to(V(45678)).
  iterate()

1 l1 顶点可以与边关联( e1 )到多个不同的 l3 顶点。我正试图根据以下几点来综合上述情况: submit_time 财产来源 l1 . 我试过下面的查询。

g.V().hasLabel("l1").
  group().
    by(map {(it.get().value("submit_time").getYear() + 1900) + "/" +
            (it.get().value("submit_time").getMonth() + 1) + "/" +
             it.get().value("submit_time").getDate()}).
  unfold().
  project('submitdate','job','jobdesc').
    by(keys).
    by(values).
    by(select(values).unfold().out('e1').has("condition","somevalue").fold()).
  order(local).
    by(keys, incr)

它给了我下面的结果。

==>[job:[v[12347]],jobdesc:[],submitdate:2019/5/14]
==>[job:[v[2355208312],v[4522323]],jobdesc:[v[678954]],submitdate:2019/5/15]

在上面的结果中,它是基于 submitdate 给我它对应的 l1 顶点组件 job 然而,在聚合之后 jobdesc 是空的,因为它不满足“has”条件 .has("condition","somevalue") .
在第一个结果中,即使顶点 v[12347] 在聚合中被考虑,并且有优势 v[45678] 以及 v[67892] 它们不满足“has条件”,所以我的 jobdesc 是空的。类似地,在第二个结果中,我的一个顶点( v[678954] )满足上述条件。
有人能帮我得到一些默认值吗,比如一个空数组 jobdesc 对于每个作业顶点,如果它不满足条件并且在聚合中被考虑?
预期产量

==>[job:[v[12347]],jobdesc:[[]],submitdate:2019/5/14]
==>[job:[v[2355208312],v[4522323]],jobdesc:[[],v[678954]],submitdate:2019/5/15]

如: v[2355208312] 在聚合中考虑
submitdate 2019/5/14 但是没有 jobdesc 因此,我无法Map每个作业的索引及其对应的索引 jobdesc .

khbbv19g

khbbv19g1#

所有的查询都丢失了,是一个附加的 map() 和一个 fold() 步骤。

gremlin> g.V().hasLabel("l1").
           group().
             by(map {(it.get().value("submit_time").getYear()  + 1900) + "/" +
                     (it.get().value("submit_time").getMonth() +    1) + "/" +
                      it.get().value("submit_time").getDate()}).
           unfold().
           project('submitdate','job','jobdesc').
             by(keys).
             by(values).
             by(select(values).unfold().
                map(out('e1').has("condition","somevalue").fold()). /* for each job */
                fold()).
           order(local).
             by(keys, incr)
==>[job:[v[12347]],jobdesc:[[]],submitdate:2019/5/14]
==>[job:[v[4522323],v[2355208312]],jobdesc:[[v[678954]],[]],submitdate:2019/5/15]

相关问题