我想用neo4j選擇用戶,他們觀看的動作片的數量以及由Roland Emmerich指導的每個用戶的動作電影數量。Neo4j獨立選擇幾個比賽條款
我以各種形式嘗試此查詢:
match (u:User)-[:watched]->(m:Movie)-[belongs_to]->
(Category{category_name:"Action"}) with count(m) as actionMovies, u
match (m:Movie)<-[directed]-(Director{director_name:"Roland Emmerich"})
return u, count(m) as MoviesFromRE, actionMovies
但查詢執行永遠不會完成。所以我假設我正在做一些交叉連接。
實際上,我希望第一次計數獨立於第二次,因爲當編譯器進入第二個匹配子句時,它已經計算出來了。
下面是相關數據庫視圖
感謝您的任何建議和幫助
好擺脫錯別字以及包括電影與條款後:
match (u:User)-[:watched]->(m:Movie)-[:belongs_to]->
(:Category{category_name:"Action"}) with count(m) as actionMovies, u, m
match (m)<-[:directed]-(:Director{director_name:"Roland Emmerich"})
return u, count(m) as MoviesFromRE, actionMovies order by u.user_name
現在我得到的動作電影始終是1.我認爲它是因爲我現在先與電影條款進行分組。我認爲我需要一種方法將電影從第一個條目移到第二個條目,但不要將他們的第一個結果分組。
您在查詢中有一些奇怪的事情,不知道如果在這裏粘貼時,他們是錯別字,或者如果他們在存在查詢您正在嘗試運行。請記住,關係類型前面有':',但是查詢中的'belongs_to'和'directed'不是,這意味着它們是與任何類型關係匹配的變量。同樣,查詢中的「Director」不是標籤(不是':'),所以它是一個變量,它與'director_name'屬性設置爲「Roland Emmerich」的任何節點相匹配。與'Category'類似。 – InverseFalcon
另外,你的第二場比賽與你的第一場比賽完全脫節。假設關係和導演節點已經固定,因此它們不是變量,那麼您需要獲得Roland Emmerich指導的所有電影,並且這與用戶觀看的電影沒有任何關係,但對於電影的數量將保持不變羅蘭艾默裏奇執導。這是因爲「m」變量綁定到:Movies與您的第一個匹配不是一樣的「m」(它不會保留在您的WITH中) – InverseFalcon
@InverseFalcon我擺脫了我的拼寫錯誤併發布了帶有您的建議的新代碼的條款。可悲的是我得到一個錯誤的結果,因爲動作電影現在總是1 – dbmongo