【问题标题】:Map the id to its dateRange and return the result将 id 映射到它的 dateRange 并返回结果
【发布时间】:2021-06-29 07:42:09
【问题描述】:
List<String> id = new ArrayList<>();
String cypher = "unwind $dateRanges as dateRange match(f:File)-[c:CHANGED]-(fo:Folder) where c.changedDate < dateRange.endDate and c.changedDate > dateRange.startDate return dateRange.startDate, dateRange.endDate, f, fo, $id as id"
neo4J.getResults(
    cypher,
    Values.parameters(
       "dateRanges", dateRangeMapList,
       "id", id.remove(0)
    ),
    results -> null
);


dateRangeMapList => [{startDate="2021-01-09", endDate="2021-01-15"},
{startDate="2021-01-15", endDate="2021-01-21"}]

id => ["123", "234"]

我需要将“123”指向 dateRangeMapList 中的第一个 dateRange,将“234”指向第二个。 id.remove(0) 总是将第一个 id "123" 设置为两个 dateRanges。如何解决这个问题?

【问题讨论】:

    标签: java neo4j cypher


    【解决方案1】:

    我不是 Java 专家,但据我了解,文档 ArrayList.remove() 返回从列表中删除的元素。因此,id.remove(0) 将返回 123。我不明白你为什么打电话给id.remove(0)

    你有两个选择:

    (1)将对应的id放入dateRangeMapList

    UNWIND $dateRanges AS dateRange
    MATCH (f:File)-[c:CHANGED]-(fo:Folder)
    WHERE c.changedDate < dateRange.endDate AND c.changedDate > dateRange.startDate 
    RETURN dateRange.startDate, dateRange.endDate, f, fo,  dateRange.id AS id
    
    dateRangeMapList => [
      { id="123", startDate="2021-01-09", endDate="2021-01-15" },
      { id="234", startDate="2021-01-15", endDate="2021-01-21" }
    ]
    

    (2) 像 for 循环一样遍历两个数组(避免调用id.remove(0)):

    UNWIND range(0, size($dateRanges)) AS index
    MATCH (f:File)-[c:CHANGED]-(fo:Folder)
    WHERE c.changedDate < $dateRanges[index].endDate AND c.changedDate > $dateRanges[index].startDate 
    RETURN $dateRanges[index].startDate, $dateRanges[index].endDate, f, fo, $id[index] AS id
    
    dateRangeMapList => [
      { startDate="2021-01-09", endDate="2021-01-15" },
      { startDate="2021-01-15", endDate="2021-01-21" }
    ]
    id => ["123", "234"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 2017-10-26
      • 2017-10-16
      相关资源
      最近更新 更多