2
我無法返回與特定屬性沒有關係的節點。爲什麼Neo4j無功能在我的查詢中工作?
下面就來建立圖的情況下,查詢:
create ({Name:'Foo1'})-[:T]->({Name:'Bar'})<-[:T{Inactive:true}]-({Name:'Foo2'})<-[:T]-({Name:'Foo3'})
我們指定期望的結果更多: 我想所有以某種方式連接到「酒吧」的節點。所以從上面的查詢創建的圖表我希望得到Foo1和Foo3。
我有那些不有使用下列查詢「無效」財產有關係麻煩節點:
match (bar)<-[rs*]-(foo) where ID(bar)= **BAR_ID**
optional match (foo)-[r]->() where r in rs
with foo, collect(distinct r) as relationships
where none(rel in relationships where rel.Inactive = true)
return foo
現在,您可能會注意到查詢與第二位的盛會where子句。它是解決不同問題的一部分,所以請不要專注於該部分,除非它是我的問題的一部分。我感興趣的是查詢無法返回任何內容的原因。看來none()函數的謂詞無法正常工作。特別是因爲與任何()更換無()將只返回foo2的預期,像這樣:
match (bar)<-[rs*]-(foo) where ID(bar)= **BAR_ID**
optional match (foo)-[r]->() where r in rs
with foo, collect(distinct r) as relationships
where any(rel in relationships where rel.Inactive = true)
return foo
所以,再一次,問題是爲什麼使用無()功能ISN查詢什麼都不回來。首先,我認爲它可能與某些沒有「非活動」屬性但docs的關係有關,它們告訴您缺少的屬性評估爲false(因爲它爲空)。至少,這是我的解釋,當然可能是錯的。
我對這個問題的解決方案並不感興趣,因爲我已經編寫了另一個返回Foo1和Foo3的查詢。 我想知道爲什麼查詢的問題不起作用。