2016-04-28 161 views
2

使用下面的Cypher我試圖讓所有沒有被刪除的區域及其物品。這裏的問題是where子句似乎根本不起作用。它仍然返回所有區域,儘管其中一些被刪除。任何想法我失蹤?Cypher Where子句不工作

Match(n:Zone) 
WITH n 
WHERE NOT n.deleted in [NULL, 'false'] 
OPTIONAL Match(n)-[]-(items:Item) 
RETURN n, items; 

使用2.3.1版

+0

什麼是正在返回的節點和您預計不會有被刪除的屬性的值? '假'和假是兩個不同的值。此外,你確定你想'刪除'區留在圖表? – manonthemat

+0

有兩個區域。一個設置爲null,另一個設置爲true。 –

回答

3

我認爲你不能處理與IN謂詞空。我認爲你需要用(n.deleted = false or n.deleted is null)重新制作這個。此外,重新排列WITH會限制您從數據庫返回的區域數量。

MATCH (n:Zone) 
WHERE NOT coalesce(n.deleted, false) = false 
WITH n 
OPTIONAL MATCH (n)--(items:Item) 
RETURN n, items; 
+0

這是有效的。謝謝! –

+0

@SonuKapoor所以,你真的**做**想要''區''被刪除?如果是這樣,你能改正你的問題嗎?該查詢返回'deleted = true'的'Zone's。 – cybersam

+1

注意你也可以使用'coalesce()'來爲一個值提供一個默認值,以防它爲空! '不合並(n.deleted,false)= false' – InverseFalcon