2

试用最新的 Neo4j 2.0 M01。我还下载了完整的 cinecast graph.db 并根据 Michael 的精彩视频教程将其配置为与 2.0 商店一起使用,请参见此处:http: //vimeo.com/63707662

我想熟悉标签,所以我的想法是向一些节点添加一些标签,这些节点被索引为用户,个人。

start n=node:Person("id: ") set n:Humans 返回计数 ( );

这行得通,它为所有被索引的节点添加了标签(但我无法在 Web 控制台中直观地看到它......但无论如何它在查询它时就在那里)

然而这不起作用:

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、names 等都是字符串。

其次,为什么不在上面的节点组上设置一个 Journalist 标签? 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

错误:预期的有效查询正文“设置 a:直升机飞行员”

最后,在 Neo4j api 文档中尝试查询时,node(0) 根目录中的某些内容不起作用,以下是有效的查询权(至少有用)?

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

错误:org.neo4j.cypher.EntityNotFoundException:节点 [0] 上不存在属性“名称”

谢谢!

4

1 回答 1

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

这个错误不应该发生。

顺便提一句。在那个查询中你不需要MATCH.

WITH您可以使用和LIMIT/更新部分节点集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在此查询中。

如果有一个节点没有 name 属性,您必须检查它之前是否存在,例如

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
于 2013-04-21T17:43:21.300 回答