我在SQL中有这个查询:
Select Id, CrawlerId,CrawlerName,
(SELECT Count(*) from CrawlerResult cr where cr.CrawlerId = cs.CrawlerId and IsNew=1) as LastRunResult ,
(SELECT Count(*) from CrawlerResult cr where cr.CrawlerId = cs.CrawlerId ) as TotalResult
FROM CrawlerScheduler cs
如何通过组合CrawlerScheduler和CrawlerResult节点将此查询转换为neo4j cypher?
答案 0 :(得分:1)
我假设您已经用SQL中的实际关系替换了SQL中的外键关系,并且您使用的是实际的布尔值而不是1和0?类似的东西:
(:CrawlerScheduler)-[:RESULT]->(:CrawlerResult)
如果是这样,那么等效的Cypher查询可能如下所示:
MATCH (cs:CrawlerScheduler)
WITH cs, SIZE((cs)-[:RESULT]->()) as TotalResult
OPTIONAL MATCH (cs)-[:RESULT]->(cr)
WHERE cr.IsNew
WITH cs, TotalResult, COUNT(cr) as LastRunResult
RETURN cs.Id, cs.CrawlerId, cs.CrawlerName, LastRunResult, TotalResult
编辑
我将第二场比赛更改为OPTIONAL MATCH,以防日程安排程序没有结果,或者没有新结果。