2

最新の Neo4j 2.0 M01 を試しています。また、完全な cinecast graph.db をダウンロードし、Michael による優れたビデオ チュートリアルに従って 2.0 ストアで動作するように構成しました。こちらを参照してください: http://vimeo.com/63707662

ラベルに慣れたいので、User、Person としてインデックスされているいくつかのノードにいくつかのラベルを追加することを考えました。

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

それは機能し、インデックス付けされているすべてのノードにラベルを追加しました(ただし、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: トランザクションはロールバック専用としてマークされています

2 つの問題: 現在、関数文字列を int に型キャストするものはありますか? ID、名前などは文字列であるため、インデックスの部分ノードを更新するために思いついたのは ID(n) だけでした。

次に、上記のノード グループに Journalist ラベルを設定しないのはなぜですか? http://docs.neo4j.org/chunked/2.0.0-M01/query-set.html#set-set-a-label-on-a-node

また、ラベルは次のような複数の単語にすることもできます:

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

エラー: 期待される有効なクエリ本文 "set a:helicopter pilot "

そして最後に、Neo4j api docs でクエリを試してみると、node(0) ルートが機能しないものがあります。以下は有効なクエリです (少なくとも有用です)。

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

エラー: org.neo4j.cypher.EntityNotFoundException: プロパティ 'name' が Node[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; 

現在、たとえば文字列と数値を追加する場合など、暗黙的な型キャストのみがあります。

トランザクションが失敗したため、ジャーナリストのラベルが設定されていませんでした。

バッククォートで引用する場合、ラベルは複数の単語にすることができます。

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 を返すショートカットが 2 つあります (プロパティはオプション)。

a.name? ='Anders'

小道具が存在しない場合に false を返すもの (プロパティが必要)

a.name! ='Anders'

start a=node(*) 
match a 
where a.name?='Anders' 
return a
于 2013-04-21T17:43:21.300 に答える