2017-10-28 53 views
0
graph = Graph() 
query2 = """ 
WITH {m} AS document 
UNWIND document.lists AS s 
UNWIND s.imageurl AS img 
UNWIND s.youtubevideourl AS vid 
RETURN s 
""" 
print (graph.cypher.execute(query2,m = m)) 

我試圖使用UNWIND通過充分JSON文件閱讀,但我只UNWIND功能不讀JSON完全

通過第一部分入門,因此我無法繪製的曲線圖完整的json。

這是罰款早些時候工作,但現在我已經加入YouTube的視頻鏈接,

相同的頁面,weblinkurl,webtitle我已經開始面臨同樣的問題的稱號。

以下是我使用不同鏈接編譯的JSON文件的示例,因爲我只能讀取第一部分,但是我想閱讀完整的JSON。

這隻有2份JSON的,我想閱讀全文,使節點

如有任何人都可以告訴如何通過放鬆或別的事情可做。

[{'Topic': 'Virat_Kohli', 
    'imagetitle': 'Virat_Kohli_June_2016_(cropped).jpg?width=300', 
    'imageurl': 'http://commons.wikimedia.org/wiki/Special:FilePath/Virat_Kohli_June_2016_(cropped).jpg?width=300', 
    'webtitle': 'Virat Kohli Official Website', 
    'weburl': 'http://www.viratkohli.club/', 
    'youtubevideotitle': 'Virat Kohli Finally Accepts Love For GIRLFRIEND Anushka Sharma On Aamir Khan's Secret Superstar Show - YouTube', 
    'youtubevideourl': 'https://www.youtube.com/watch?v=zmPh2OQzZqc'}, 
{'Topic': 'Virat_Kohli', 
    'webtitle': 'Virat Kohli profile 2017, News and images only on official website of RCB', 
    'weburl': 'https://www.royalchallengers.com/virat-kohli', 
    'youtubevideotitle': 'Virat Kohli after losing ICC champions trophy Final - India vs Pakistian - Press Conference 2017 - YouTube', 
    'youtubevideourl': 'https://www.youtube.com/watch?v=Yf38l1Kx2-I'}, 

什麼,我想是做的是

graph = Graph() 
query2 = """ 
WITH {j} AS document 
UNWIND document.lists AS s 
UNWIND s.Topic AS top 
UNWIND s.weburl AS url 
UNWIND s.imageurl AS img 
UNWIND s.youtubevideourl as y 
MERGE (c:topicnames {name:s.Topic}) 
MERGE (sc:images{img:img, type : s.imagetitle}) 
MERGE (v:weblink{url:url, type : s.webtitle}) 
MERGE (g:videos{vid:y, type : s.youtubevideotitle}) 
MERGE (c)-[:IMAGE_LINKS]->(sc) 
MERGE (c)-[:WEB_LINKS]->(v) 
MERGE (c)-[:VIDEO_LINKS]->(g) 
RETURN (c) 
""" 


print (graph.cypher.execute(query2,j = j)) 

所以我必須有話題和5視頻鏈接節點,5個網絡鏈接節點和1個ImageLink的節點的單個節點中的Neo4j,但只有其爲1部分json 繪製節點,所以UNWIND不會讀取或轉換與Topic,weburl,youtubevideourl具有相同關鍵字的其他值,這就是爲什麼我想知道它爲什麼不起作用以及如何解決它的原因。

+0

你想用3' UNWINDS'完成什麼?你查詢的只是返回's',這是由第一個'UNWIND'獲得的。 – cybersam

+0

我想你可能不明白UNWIND的作用。 UNWIND在集合/列表上操作,並將該集合更改爲行。第一個UNWIND看起來很好,但另外兩個是在非集合值上操作的(根據您的摘錄,它們是字符串)。你究竟想在這裏做什麼? – InverseFalcon

+0

我想做什麼 –

回答

0

JSON文件本身就是文檔列表,因此您不需要專門傳遞列表。而且你不需要多次使用UNWIND。嘗試使用下面的程序(並確保解析時存在所有變量):

graph = Graph() 
query2 = """ 
UNWIND {j} AS s 
MERGE (c:topicnames {name:s.Topic}) 
MERGE (sc:images{img:s.imageurl, type : s.imagetitle}) 
MERGE (v:weblink{url:s.weburl, type : s.webtitle}) 
MERGE (g:videos{vid:s.youtubevideourl, type : s.youtubevideotitle}) 
MERGE (c)-[:IMAGE_LINKS]->(sc) 
MERGE (c)-[:WEB_LINKS]->(v) 
MERGE (c)-[:VIDEO_LINKS]->(g) 
RETURN (c) 
""" 
print (graph.cypher.execute(query2,j = j)) 

希望這有助於!

+0

我嘗試了相同的方法,但是它給出了語義錯誤。-AttributeError:module'py2neo.cypher。 'SemanticError'。還是謝謝你的建議 –

+0

你爲什麼不試試python-neo4j驅動。它比py2neo更快更容易。我建議這是因爲我們正在使用當前項目中的驅動程序。 – techie95