簡體   English   中英

如果存在關系,則按關系對neo4j進行排序

[英]Sorting neo4j by relationship if relationship exist

我目前正在開發一個社交應用,該應用需要按關鍵字過濾用戶。 我正在使用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/

已經找到解決方案:

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

該查詢將按關系,用戶名和顯示名稱排序。 如果有人有更好的答案和更好的性能,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM