2017-05-29 6 views
0

追加のプロパティを持つAとBの間の最短パスをすべて見つける必要があります。追加の条件で最短パスを検索するクエリはレコードを返しません

MATCH (darjeeling { name: 'Darjeeling' }),(sandakphu { name: 'Sandakphu' }), 
    paths = allShortestPaths((darjeeling)-[*]-(sandakphu)) 
RETURN paths 

結果::

(3部を持っている唯一のルートがあり、これは本当です)このクエリは私に一つだけのルートを返します。このルートの

{"start":{"identity":1,"labels":["town"],"properties":{"name":"Darjeeling"}},"end":{"identity":3,"labels":["peak"],"properties":{"altitude":"12400 ft","name":"Sandakphu"}},"segments":[{"start":{"identity":1,"labels":["town"],"properties":{"name":"Darjeeling"}},"relationship":{"identity":2,"start":1,"end":0,"type":"trek","properties":{"distance":15,"name":"Darjeeling-Rimbik","winter":"true","summer":"true"}},"end":{"identity":0,"labels":["town"],"properties":{"name":"Rimbik"}}},{"start":{"identity":0,"labels":["town"],"properties":{"name":"Rimbik"}},"relationship":{"identity":3,"start":0,"end":2,"type":"trek","properties":{"distance":18,"name":"Rimbik-BhikeBhanja","winter":"true","summer":"true"}},"end":{"identity":2,"labels":["village"],"properties":{"name":"BhikeBhanja"}}},{"start":{"identity":2,"labels":["village"],"properties":{"name":"BhikeBhanja"}},"relationship":{"identity":4,"start":2,"end":3,"type":"trek","properties":{"distance":4,"name":"BhikeBhanja-Sandakphu","winter":"true","summer":"true"}},"end":{"identity":3,"labels":["peak"],"properties":{"altitude":"12400 ft","name":"Sandakphu"}}}],"length":3} 

すべての部品を持っていますproperty winterをtrueに設定しましたが、クエリにそのような条件を追加したい場合、結果はありません。

MATCH (darjeeling { name: 'Darjeeling' }),(sandakphu { name: 'Sandakphu' }), 
    paths = allShortestPaths((darjeeling)-[*]-(sandakphu)) 
WHERE ALL (p IN relationships(paths) WHERE p.winter = true) 
RETURN paths 

私の質問は、AとBの間にルートがあるのに2番目のクエリが結果を返さない理由です。これは最短ルートです。このルートのすべてのパスはtrueに設定されていますか?私はあなたを信じて

+1

がある:あなたがブールプロパティにこれらを変更したい場合は、このプロパティと使用とのすべての関係で一致する必要があります

WHERE p.winter = "true"

'winter'はブール値のプロパティか文字列のプロパティですか?条件が 'WHERE p.winter =" true "'の場合、結果は得られますか? – InverseFalcon

+0

それは実際に文字列のプロパティです!それは ""と一緒に働きます... – TheOpti

答えて

0

は、このように、パスの別のMATCHを行う必要があります。

MATCH (darjeeling { name: 'Darjeeling' }), (sandakphu { name: 'Sandakphu' }) 
MATCH paths = allShortestPaths((darjeeling)-[*]-(sandakphu)) 
WHERE ALL (p IN relationships(paths) WHERE p.winter = true) 
RETURN paths 
+0

悲しいことに、あなたの質問は結果を返しません。 – TheOpti

+0

最初のクエリの結果を追加しました。 – TheOpti

1

は答えにこれを定式化。

ブール値プロパティの代わりに文字列プロパティがあるようです。この条件は、あなたのために働く必要があります。

SET p.winter = (p.winter = "true")

関連する問題