2015-01-27 66 views
0

我有一個非常簡單的查詢Neo4j的NOT IN查詢

MATCH p=(a:User)-[r:VISITS]->(end:Page) 
WHERE r.rating<2 AND t.rating>5 
RETURN EXTRACT (n IN nodes(p)|n.page_id) ,count(p) 
ORDER BY count(p) DESC; 

這工作得很好。但是,每個end節點都被分配了一個屬性page_id。我有一個外部的python腳本,它生成了列入白名單的page_id列表,應該被忽略。例如page_id_white = [1,4,5,6]應該被忽略,並且代碼應該只返回end.page_id不在page_id_white中的路徑。我已經嘗試了一個簡單的NOT IN page_id_white語句,但它不起作用。有人可以幫我解決問題嗎?

回答

2

不能做NOT IN。需要是WHERE NOT thing IN coll

MATCH p=(a:User)-[r:VISITS]->(end:Page) 
WHERE NOT end.page_id IN {page_id_white} 
RETURN EXTRACT(n IN NODES(p) | n.page_id), COUNT(p) 
ORDER BY COUNT(p) DESC; 
+0

我相信我做錯了什麼,但我讓我的代碼運行(這是一個龐大的數據庫)之後,我醒了此消息:'py2neo.neo4j.ParameterNotFoundException:預期參數命名page_id_white'我可以開始一個新的問題,讓我知道如果我需要這樣做。 – user201411 2015-01-27 18:41:42

+0

'{page_id_white}'是一個參數。您可以使用py2neo輕鬆傳遞參數。否則,你可以特別插入一個像'[1,2,3]'的集合。 – 2015-01-27 18:44:01

+0

是的,它在我插入集合時起作用。我將看看如何傳遞參數。謝謝! – user201411 2015-01-27 18:57:39