2013-02-02 24 views
1

我想在py2neo的索引列表內的特定節點上設置一個新屬性。這個想法是列表中的第一個節點將獲得一個新的屬性。屬性值將是靜態的,以便將來找到所有相關的節點。在下面的例子中,「nodez」列表將會改變,但是第一個項目總是需要新的屬性和靜態值。Py2neo - 「set_node_property」的正確用法

from py2neo import neo4j, cypher 
graph_db = neo4j.GraphDatabaseService("http://localhost:7474/db/data/") 

nodez = ['test1', 'test2', 'test3'] 
mytestindex = graph_db.get_or_create_index(neo4j.Node, "name") 
nodes2 = [] 
for word in nodez: 
    nodes2.append(mytestindex.get_or_create("name", word, {"name": word})) 
a = nodes2[0] 
newpropkey = "new_property" 
newpropvalue = "static_value" 
set_node_property(a, newpropkey, newpropvalue) 

因此,如果下一次該程序運行,並且nodez = [ 'TEST4', 'TEST5', 'TEST6'],則兩個 'test1的' 和 'TEST4' 將包含新的屬性值。例如,以下密碼查詢將返回索引「name」中'test1'和'test4'的節點。謝謝你的幫助!

START a = node:name(new_property="static_value") 
+0

我意識到我忘記了導入WriteBatch。它仍然不能正常工作,所以我知道我會以錯誤的方式去解決它 –

回答

2

set_node_property僅適用於批量操作。在這種情況下,您只需使用:

a[newpropkey] = newpropvalue 
+0

感謝奈傑爾,我知道這是一個簡單的修復。它看起來像它的工作,雖然下面的Cypher查詢返回沒有結果:neo4j-sh(0)$ START a = node:name(new_property =「static_value」) > RETURN a; ==> + --- + ==> | a | ==> + --- + ==> + --- + ==> 0行 ==> 0 ms –

+1

在py2neo 2.0中,你可以設置屬性,但是我認爲你需要推動數據庫是這樣的: node.push() – Marnee