代码之家  ›  专栏  ›  技术社区  ›  Srinath Ganesh

gremlin:日期过滤器

  •  3
  • Srinath Ganesh  · 技术社区  · 6 年前

    基于日期字段筛选图形数据库:我已搜索 http://tinkerpop.apache.org/docs/current/reference/ 但没有找到相同的文档。

    做了一些研究 lt ,请 gt 等等正在工作。但是我下面的方法是正确的吗?还是有正式的方法来做? 以下代码适用于海王星和NEO4J,但该供应商是独立的。

    也发现了4/5年 old post 它被推荐使用很长时间,但我觉得它很旧。


    样本数据:

    g.addV("TestDate2").property("title", "Alpha").property("date", "01-19-2018")
    g.addV("TestDate2").property("title", "Bravo").property("date", "02-20-2018")
    g.addV("TestDate2").property("title", "Charlie").property("date", "03-13-2018")
    g.addV("TestDate2").property("title", "Delta").property("date", "04-14-2018")
    g.addV("TestDate2").property("title", "Echo").property("date", "05-15-2018")
    g.addV("TestDate2").property("title", "Foxtrot").property("date", "06-16-2018")
    g.addV("TestDate2").property("title", "Hotel").property("date", "07-17-2018")
    g.addV("TestDate2").property("title", "India").property("date", "08-18-2018")
    

    查询 以下内容:

    (我对输出的数据进行了格式化,这样它就不会真正匹配gremlin输出,但更具可读性)

    小于

    g.V().has("TestDate2", "date", lt("03-03-2018")).valueMap()
    {'date': ['02-20-2018'], 'title': ['Bravo']}
    {'date': ['01-19-2018'], 'title': ['Alpha']}
    
    g.V().has("TestDate2", "date", lt("03-24-2018")).valueMap()
    {'date': ['03-13-2018'], 'title': ['Charlie']}
    {'date': ['02-20-2018'], 'title': ['Bravo']}
    {'date': ['01-19-2018'], 'title': ['Alpha']}
    

    大于

    g.V().has("TestDate2", "date", gt("06-16-2018")).valueMap()
    {'date': ['07-17-2018'], 'title': ['Hotel']}
    {'date': ['08-18-2018'], 'title': ['India']}
    
    g.V().has("TestDate2", "date", gte("06-16-2018")).valueMap()
    {'date': ['07-17-2018'], 'title': ['Hotel']}
    {'date': ['06-16-2018'], 'title': ['Foxtrot']}
    {'date': ['08-18-2018'], 'title': ['India']}
    

    过滤器之间

    g.V().has("TestDate2", "date", between("04-01-2018", "07-01-2018")).valueMap()
    {'date': ['06-16-2018'], 'title': ['Foxtrot']}
    {'date': ['04-14-2018'], 'title': ['Delta']}
    {'date': ['05-15-2018'], 'title': ['Echo']}
    

    失败了,但很好

    g.V().has("TestDate2", "date", lt("3-3-2018")).valueMap()
    {'date': ['03-13-2018'], 'title': ['Charlie']}
    {'date': ['07-17-2018'], 'title': ['Hotel']}
    {'date': ['02-20-2018'], 'title': ['Bravo']}
    {'date': ['06-16-2018'], 'title': ['Foxtrot']}
    {'date': ['04-14-2018'], 'title': ['Delta']}
    {'date': ['08-18-2018'], 'title': ['India']}
    {'date': ['01-19-2018'], 'title': ['Alpha']}
    {'date': ['05-15-2018'], 'title': ['Echo']}
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Divij Vaidya    6 年前

    datetime() here

    // Insert Date as property
    String insertQuery = "g.addV('TestDate2').property('title','Alpha').property('date', datetime('2018-01-19T00:00:00'))";
    
    // Query for the date added above
    String query = "g.V().hasLabel('TestDate2').has('date',gte(datetime('1929-01-01T00:00:00'))).valueMap()";