要查找我拥有的评分最低的用户
match (:User)-[r:RATED*0..1]->(n:User)
return n, max(size(r)) as rating_count order by rating_count limit 1
但我认为他们可能是更好的方式?
我怀疑这将计算所有用户的评分计数,然后排除所有行,然后丢弃除第一个结果之外的所有行
答案 0 :(得分:2)
不幸的是,订购结果需要触及所有结果,现在无法对其进行优化。
你可以加快速度的一种方法是修改你的MATCH,使其使用关系度,可以直接从节点检索,而不必将关系扩展到其他节点(你必须省略)关系连接到的节点的类型,因此仅在以下情况下有效:用户可以是:RATED关系的起始节点。
尝试:
var CurrentDate = "2017-04-25T00:00:00";
var date_new = new Date(CurrentDate);
document.write(new Intl.DateTimeFormat('en-US').format(date_new));
答案 1 :(得分:1)
可能考虑的另一件事是具有相同低评级的多个用户。例如,如果有十个用户完全没有:RATED
关系怎么办?你只想要退回一个或者你想知道所有十个吗?
在InverseFalcon解决方案的基础上,您可以添加更多行来对结果进行排序,并确保所有评分最低的用户都包含在您的结果中。
MATCH (n:User)
WITH n, size((n)<-[:RATED]-()) AS rating
ORDER BY rating
WITH COLLECT([n,rating]) as users, MIN(rating) AS min_rating
RETURN [ r IN users WHERE r[1] = min_rating | r[0] ] AS min_rated_users, min_rating