2013-04-21 91 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