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

为什么上面的查询没有返回游戏?第一个条件为真,秒为假 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 回答