2

私はプレイヤーゲームのノードタイプを持っています....プレイヤーは他のプレイヤーをゲームに招待できます。
プレイヤーAがプレイヤーBを招待すると、次のようになります。

A-[:INTERACT]->game<-[:INTERACT]-B , game.initiator = ID(A) , game.state = 'INVITE'

ご覧のとおり、ゲーム内のプロパティを使用して、誰が誰を招待したかを表しています。
ゲームは多くの状態にある可能性があります。

特定のプレーヤーについて、状態 = INVITE であり、彼がそれらを開始するこれを除いて、すべての彼のゲームを取得するためのクエリが必要です。

次のことを試してみましたが、簡単なケースのように聞こえますが成功しませんでした:

  START playerA = node() 
  match playerA-[:INTERACT]->game<-[:INTERACT]-otherPlayer 
  where not(game.state = 'INVITE' and game.initiator = ID(playerA)) 
  return game

例: http://console.neo4j.org/r/fkpoht

START playerB = node(15) 
MATCH playerB-[:INTERACT]->game<-[:INTERACT]-PlayerA
WHERE NOT (game.state = 'INVITE' AND game.initiator = ID(playerB)) 
RETURN game

上記のクエリがゲームを返さないのはなぜですか? 最初の条件が true 秒が false not(true&false) = true...

この単純なクエリを正しく行う方法は何ですか? あなたの答えは高く評価されています。

4

2 に答える 2

2

どうですか

START playerA = node(1) 
MATCH playerA-[:INTERACT]->game<-[:INTERACT]-otherPlayer 
WHERE (game.state='INVITE' AND game.initiator <> 1) OR (game.state<>'INVITE') 
RETURN game
于 2013-06-29T08:42:38.513 に答える
1

彼が開始したすべてのゲームを取得する必要がある場合は、次のように述べますnot INVITE

 START playerA = node() 
 MATCH playerA-[:INTERACT]->game<-[:INTERACT]-otherPlayer 
 WHERE (game.initiator = ID(playerA)) AND NOT (game.state = 'INVITE')
 RETURN game
于 2013-06-28T18:00:53.880 に答える