给定日期的格林姆林日

时间:2018-09-02 17:48:50

标签: gremlin

我是图数据库和Gremlin图遍历语言的新手。我有一个要求,客户运行图查询将传递日期。对于给定的日期,我需要首先找到星期几,然后针对顶点/边的属性进行查询。注意:星期几将成为我的图形“顶点”中的属性键。 例如,顶点(零售店)-顶点的属性将反映商店是打开还是关闭。 [SUN:CLOSED,MON:OPEN,TUE:OPEN,WED:OPEN,THU:OPEN,FRI:OPEN,SAT:OPEN]。我还了解,还有另一种方法可以解决此问题,方法是要求客户传递日期和星期几-我想检查做此gremlin的可行性,因为我可能有用例根据传递的日期和日期来计算新的日期。然后找到星期几。欣赏思想。

1 个答案:

答案 0 :(得分:0)

作为一种语言,克里姆林宫无法从日期本地计算星期几,因此您必须在Lamda自身内部使用lambda进行计算(这并不总是与之完全兼容)所有启用TinkerPop的系统)。我认为,为此目的使用lambda可能会导致看上去相当复杂的Gremlin,因为您基本上是在构造一个动态属性键,当可以更简单地对其进行处理时,这会模糊代码的可读性。

我认为您可以通过仅使用本机编程语言预先计算一周中的一天,然后在Gremlin中使用该值来“简单得多”。在Java中,可能看起来像这样(未经测试):

public String getStoreStatus(Date d, GraphTraversalSource g) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(d);
    String dayOfWeek = cal.getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());

    return g.V().has('store','name','Target').values(dayOfWeek).next();
}