我在Cypher中有一个查询,该查询可找到特定设备的最新上次使用时间。 我要匹配数据库中所有设备的“上次时间”属性是其设备的最新属性,然后返回其ID。不幸的是,我无法创建适当的子查询。
我尝试使用with和{}的示例,但找不到任何有效的方法。
(有效的)主要批量商品:
MATCH (a:device)
MATCH (b:device)
WHERE certain filters
RETURN
CASE
WHEN a.last_seen > MAX(b.last_seen) THEN a.last_seen
WHEN a.last_seen < MAX(b.last_seen) THEN MAX(b.last_seen)
ELSE a.last_seen END AS lastest
然后我想做:
MATCH (d:device)
WHERE d.last_seen = lastest
RETURN d.device_id
到目前为止,我所做的一切都仅使我出现语法错误。如何嵌套批量查询?
答案 0 :(得分:0)
您可以使用 MAX函数获得最新的last_seen。
然后,您可以使用它使用最新的last_seen 来获取所有设备。
这里是查询以获取last_seen的最大值,然后获取与此last_seen匹配的所有设备。
MATCH (a:device)
WHERE certain filters
WITH MAX(a.last_seen) AS latest_last_seen
MATCH (d:device)
WHERE d.last_seen = latest_last_seen
RETURN d.device_id
(用您要应用的过滤器替换某些过滤器。我认为您忘了在第二个查询中添加某些过滤器。)
编辑:如@InverseFalcon所建议,在属性last_seen上添加索引