2013-06-28 143 views
2

我有玩家遊戲節點類型....玩家可以邀請其他玩家參加比賽。
一旦玩家一個將邀請玩家它看起來就像是:
不是運營商查詢密碼neo4j

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 

爲什麼上面的查詢不會返回遊戲?第一個條件是真的秒是假的沒有(真的& false)=真...

這是什麼方法來做這個簡單的查詢權?你的回答非常感謝。

回答

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 
+0

在你的查詢中,每個帶有狀態<> INVITE的遊戲都不會返回,這不是我所需要的。 –

+0

你是什麼意思,你不能嘗試它?所有查詢所需的遊戲屬性都存在... –

+0

K我現在可以看到控制檯屬性的好了。無法弄清楚NOT,但編輯我的查詢與解決方法 – Luanne

0

如果你需要找回他的所有比賽,這是他引發他們與國家not INVITE

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

我想所有的遊戲,除了這些,其在(INVITE狀態&他發起他們) –

+0

'START playerA = node() MATCH playerA - [:INTERACT] - > game < - [:INTERACT] -otherPlayer WHERE NOT(game.initiator = ID(playerA))AND NOT(game.state ='INVITE') R ETURN遊戲' –

+0

在您的查詢任何遊戲,在INVITE狀態|| playerA啓動不會返回。這不是我所需要的。 –