我有JSON數據,通過它我使用https://github.com/thingdom/node-neo4j連接器創建節點和節點之間的關係。創建neo4j和nodejs的重複節點
我有以下JSON格式
{
att0:"abcd",
att1:"val1",
att2:"val2",
att3:"val3",
att4:"val4",
att5:"val5",
att6:"val6",
att7:"val7",
att8:"val8"
} .... more like this around 1000
Here att0+att1 gives me unique id after md5 hash (let it be UID1) .
and att4 gives me unique id after md5 hash (let it be UID2).
and att7 gives me unique id after md5 hash (let it be UID3).
我創建下列屬性的兩個節點的:
Node 1 :
{
id: UID1 ,
att3:"val3"
}
Node 2 :
{
id:UID2,
att5:"val5",
att6:"val6"
}
Relationship from Node 1 --> Node 2 :
{
id:UID3,
att5:"val8"
}
以下是我的數據插入查詢:
for(i=0; i<1000; i++){ // 1000 objects in json
// create UID1,UID2 and UID3 based on above info for each object
// and create query string as mentioned below
query_string = MERGE (n:nodes_type1 {id:'UID1'})
ON CREATE SET n={ id:'UID1', att3:'val3'},n.count=1
ON MATCH SET n.count = n.count +1
MERGE (m:nodes_type2 {id:'UID2'})
ON CREATE SET m={ id:'UID2', att5:'val5', att6:'val6'},m.count=1
ON MATCH SET m.count = m.count +1
MERGE (n)-[x:relation_type {id:'UID3'} ]->(m)
ON CREATE SET x={ att8:'val8', id:'UID3' },x.count=1
ON MATCH SET x.count = x.count +1 return n
db.query(query_string, params, function (err, results) {
if (err) {
console.log(err);
throw err;
}
console.log("Node Created !!! "+ event_val)
});
}
首先我清了neo4j數據庫使用以下外部查詢(使用neo4j數據庫UI): 現在的問題是當我查詢MATCH(n:nodes_type2)返回COUNT(n)。由於json中有1000個對象,因此它應該創建1000個節點。但是結果會超過1000(約9000),並且每次清除數據並重新啓動腳本時都會不斷變化。當我在結果中看到有相同UID的多個節點時。不應該合併查詢handel節點匹配和增量計數器。合併是遞增計數器,但在一些數字之後,新節點用相同的UID創建。
我在小數據集上運行查詢我得到3個uids,但是當我做n.count = n.count + 1時count數字不匹配。例如Uid1「n.count」的值應該是30,但它的值爲24,當我清除數據庫並重新啓動服務器並再次運行腳本時,它的值爲27。每次我遵循這個過程,不同的數字都會小於30。有時候還會有30次,但並不持久。我認爲有些n.count = n.count + 1錯過了。與UID2和UID3相同的情況。我無法調試導致此計數跳過的原因。 – user1276171 2014-11-05 10:57:01
通過回顧您的問題,您爲什麼這樣做? ON CREATE SET n = {id:'UID1',att3:'val3'}我認爲你應該做SET n.id ='UID1',n.att3 ='val3',n.count = n.count + 1 – 2014-11-05 15:15:21
因爲=> LockClient [482] < - [:HELD_BY] - RWLock [INDEX_ENTRY(1008890011))錯誤:LockClient [482]無法等待資源RWLock [INDEX_ENTRY(1008890011),hash = 1602649173] ,哈希= 1602649173] < - [:WAITING_FOR] - LockClient < - [:HELD_BY] - RWLock [INDEX_ENTRY(1008890011),hash = 1602649173] – user1276171 2014-11-06 09:31:25