我已经像这样对时间轴建模:
(t: Timeline) - [:PREV] -> (t1: Timeline) - [:PREV] -> (t2: Timeline)
每个Timeline
节点都有一个名为timestamp
的属性。
我的时间事件来自RabbitMQ,未指定顺序(因为所有服务都使用异步推送到队列),所以当新的时间事件到来时,我需要在正确的位置插入新的时间节点以维护我的时间轴订单。
要将新的Timeline
节点插入时间轴,请使用以下查询遍历该列表:(headTimestamp
是最新的时间节点)
MATCH (t: Timeline {timestamp: headTimestamp}) - [:PREV*] -> (t1: Timeline)
WHERE t1.timestamp < newTimestamp
RETURN t1
我找不到在第一场比赛中休息的方法。当前,它返回所有带有timestamp < newTimestamp
我该怎么做,或者该问题可以解决吗?
答案 0 :(得分:1)
您也许可以使用LIMIT 1
获得第一场比赛:
MATCH (t: Timeline {timestamp: headTimestamp}) - [:PREV*] -> (t1: Timeline)
WHERE t1.timestamp < newTimestamp
WITH t1 LIMIT 1
RETURN t1
您可能需要进行测试以确保您获得了第一个匹配结果,因为除非使用ORDER BY,否则通常不会定义结果的顺序,就像这样:
MATCH path = (t: Timeline {timestamp: headTimestamp}) - [:PREV*] -> (t1: Timeline)
WHERE t1.timestamp < newTimestamp
WITH t1
ORDER BY length(path) ASC
LIMIT 1
RETURN t1