我想選擇db中沒有給定關係類型的所有節點與任何其他節點。選擇缺少某種關係類型的節點
這裏是我的數據庫結構:我有發佈事件節點的用戶節點。發佈關係更具體,存在各種類型的關係,如type1
和type2
。
我該如何快速選擇所有與事件有關係但與事件沒有關係的用戶節點。
這是我現在使用的查詢:
START u = node:users("*:*")
MATCH (ev1)<-[r1:type1]-(u)-[r2?:type2]->(ev2)
WHERE r2 IS NULL
RETURN u
的問題是R2是一個可選的關係。這使得上面的查詢非常緩慢,確認了neo4j文檔所說的內容。
如何提高查詢的速度?我能否更好地建模數據以提高性能?
謝謝! 亞歷克斯
的可能重複[暗號:尋找那些沒有被特定的用戶還額定的電影(http://stackoverflow.com/questions/19543957/cypher-finding-movies-that-havent-been-評分由特定用戶) –
@StefanArmbruster我在你推薦的問題中使用了答案,並且查詢響應類型增加了50%。這裏是我使用的查詢: start u = node:users('*:*') match(u) - [:type1] - >() where not(u) - [:type2] - >() 返回計數(distinct(u)) –
@StefanArmbruster但是,現在我注意到我無法在「where not」結構中附加對關係/節點的引用。 IE瀏覽器。 '...在哪裏不是(u) - [r2:type2] - >(ev2)...'發出此錯誤:未知標識符'ev2'。未知標識符「r2」。任何解決方案 –