我有玩家和游戏节点类型。。。。玩家可以邀请其他玩家参加游戏
一旦玩家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 sec为false not(true&false)=true。。。
如何正确执行这个简单的查询?非常感谢你的回答。
怎么样
START playerA = node(1)
MATCH playerA-[:INTERACT]->game<-[:INTERACT]-otherPlayer
WHERE (game.state='INVITE' AND game.initiator <> 1) OR (game.state<>'INVITE')
RETURN game
如果你需要检索他的所有游戏,他会启动这些游戏并状态为not INVITE
:
START playerA = node()
MATCH playerA-[:INTERACT]->game<-[:INTERACT]-otherPlayer
WHERE (game.initiator = ID(playerA)) AND NOT (game.state = 'INVITE')
RETURN game