【问题标题】:Sorting neo4j by relationship if relationship exist如果存在关系,则按关系对 neo4j 进行排序
【发布时间】:2018-08-11 08:56:16
【问题描述】:

我目前正在开发一个需要按关键字过滤用户的社交应用。我正在使用 neo4j 数据库。

我已经拥有该功能,但无法先按关系过滤。

例如,用户 A 关注用户 F。搜索结果应先显示 F(如果存在),然后显示其他用户。

结果是按用户名字母顺序排序,但现在我需要先按关系排序,然后是用户名。

我当前的查询: 按用户名关键字获取所有用户,按用户名排序。

    MATCH (u:User {userId:{userId}}), (su:User)
    WHERE NOT (u)<-[:BLOCK]-(su)
    AND su.username =~ {keyword}
    RETURN SU
    ORDER BY su.username

我的参考:https://neo4j.com/docs/developer-manual/current/cypher/clauses/order-by/

【问题讨论】:

    标签: neo4j spring-data-neo4j neo4jclient spring-data-neo4j-4 neo4j-ogm


    【解决方案1】:

    已经找到解决办法:

    MATCH (u:User {userName:{userId}}), (su:User {userStatus:1}) 
    WHERE NOT (u)<-[:BLOCK]-(su) 
    AND su.userName =~ {keyword}
    OR su.displayName =~ {keyword}
    RETURN
    CASE WHEN EXISTS((u)-[:FOLLOW]-(su)) THEN true
    END AS isFollow,  su
    ORDER BY isFollow, LOWER(su.userName) ASC, LOWER(su.displayName) ASC
    

    此查询将按关系、用户名和显示名称排序。如果有人有更好的答案和更好的表现,请告诉我。

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 2017-07-31
      • 2017-05-02
      • 2013-11-24
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2016-08-14
      相关资源
      最近更新 更多