不是运营商查询cypher neo4j

时间:2013-06-28 17:50:53

标签: neo4j cypher conditional-operator

我有玩家游戏节点类型....玩家可以邀请其他玩家加入游戏。
一旦玩家 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

为什么上述查询没有返回游戏?第一个条件为真,秒为假不是(真和假)=真......

这种简单查询的方法是什么?你的回答非常感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果你需要检索他发起的所有游戏,并说明not INVITE

 START playerA = node() 
 MATCH playerA-[:INTERACT]->game<-[:INTERACT]-otherPlayer 
 WHERE (game.initiator = ID(playerA)) AND NOT (game.state = 'INVITE')
 RETURN game
相关问题