2013-04-21 70 views
2

試用最新的Neo4j 2.0 M01。我也下載完整cinecast graph.db,並將其配置根據邁克爾偉大的視頻教程2.0店裏工作,在這裏看到: http://vimeo.com/63707662用Cypher添加標籤到neo4j圖2.0M01

我想熟悉的標籤,所以我的想法是添加一些將某些節點的標籤標記爲User,Person。

start n = node:Person(「id:」)set n:Humans return count();

這工作,它增加了標籤的所有節點被索引(但我不能直觀地看到它,無論如何console..but網絡它的存在時,它查詢)

但是這不起作用:

neo4j-sh (0)$ start n=node:Person("id:*") match n where ID(n)>700 and ID(n)<710 set n:Journalist return n; 

ResourceAcquisitionFailedException:該事務被標記爲回滾僅

兩個問題:今天是沒有任何類型轉換函數的字符串爲int? ID(n)是唯一可以用來更新索引的部分節點的ID,名稱等是字符串。

第二,爲什麼它沒有將記者標籤設置到上面的節點組上? http://docs.neo4j.org/chunked/2.0.0-M01/query-set.html#set-set-a-label-on-a-node

ALS,標籤可以多字,如:

start a=node(1,2,3,4) 
match a 
where a.name='Anders' 
set a:helicopter pilot 
return a 

錯誤:嘗試在

最後,在Neo4j的API文檔:預計有效的查詢體 「直升機飛行員樹立了」查詢有一些與節點(0)根不起作用,下面是一個有效的查詢權限(至少有用)?

start a=node(*) 
match a 
where a.name='Anders' 
return a 

錯誤:org.neo4j.cypher.EntityNotFoundException:屬性 '名' 上不存在節點[0]

謝謝!

回答

4

很好,你試試看。您的反饋非常感謝。

START n=node:Person("id:*") 
MATCH n where ID(n)>700 and ID(n)<710 
SET n:Journalist 
RETURN n; //or count(*) 

ResourceAcquisitionFailedException: The transaction is marked for rollback only 

該錯誤不應該發生。

btw。在那個查詢中你不需要MATCH

可以更新節點的部分集合與WITHLIMIT/SKIP

START n=node:Person("id:*") 
WITH n 
// optional ORDER BY n.name 
SKIP 700 LIMIT 10 
SET n:Journalist 
RETURN n; 

目前只有隱式類型轉換AFAIK,例如添加字符串和數字時。

記者標籤未被設置爲失敗事務的b/c。

標籤可以是多個單詞,如果您用反引號引用它們。

start a=node(1,2,3,4) 
where a.name='Anders' 
set a:`helicopter pilot` 
return a 

在這個查詢中,你再也不需要MATCH了。

如果有一個節點沒有名稱屬性,你必須檢查它是否存在,例如,與

has(a.name) and a.name='Anders'

有兩個快捷鍵,一個返回true,如果屬性不存在(財產可選)

a.name? ='Anders'

和一個返回false當道具是不是有(所需的屬性)

a.name! ='Anders'

start a=node(*) 
match a 
where a.name?='Anders' 
return a