2017-10-28 30 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