2015-05-18 19 views
5

resultDataContents ile dinlenme API üzerinden bir toplama geri kaybolur sıralama sırası şöyledir:neden = Aşağıdaki veriler için grafik

create (a:Attendee {name:'luanne'}); 
create (a:Attendee {name:'adam'}); 
create (a:Attendee {name:'christoph'}); 
create (a:Attendee {name:'vince'}); 
create (a:Attendee {name:'michal'}); 

bu sorgu kabuk dönüş yolları aracılığıyla gerçekleştirilir

MATCH p=(n:Attendee)-[r*0..1]-(m) 
WITH p order by head(nodes(p)).name 
return collect(distinct(p)) 

yoldaki ilk düğümün ismiyle sıralanmış bir uzunluk. REST API aracılığıyla Ancak

:

POST http://localhost:7474/db/data/transaction/commit 
{"statements":[ 
{"statement":"MATCH p=(n:`Attendee`)-[r*0..1]-(m) WITH p order by head(nodes(p)).name return collect(distinct(p))","parameters":{},"resultDataContents":["graph"]} 
]}]} 
aynı sırada korunmaz

(o düğüm kimliği tarafından sipariş gibi duruyor).

Cypher'i, kabuk aracılığıyla yürütüldüğünde aynı sonuçları vermek için nasıl giderebilirim?

PS. ResultDataContents "row" ise ve ayrıca REST

cevap

1

'de kullanılan COLLECT olmadığında da iyi çalışır Bu durumda Collect gerekli değildir.

return distinct p yeterli olmalıdır.

SonuçDataContents'ta "graph", yanıtları benzersiz şekilde toplamak için düğümleri ve ilişkileri toplamak için kümeleri kullanarak yanıtı yeniden işler. Siparişin kaybolması çok muhtemeldir.

+0

Merhaba Michael, Kablo boyunca gönderilen Cypher miktarını en aza indirmek için Collect'i kullanıyoruz. Tek bir satır geri, tüm farklı düğümleri, ardından tüm farklı ilişkileri takip ediyoruz. Bu olmadan, "grafik" formatında, A düğümünden başka bir B düğümüne giden her yol için, A düğümü hakkında bilgi tekrarlanır. Bu, cypher yanıtını büyük ölçüde şişirebilir ve biz aynı düğüm verilerini istemcideki birden çok kez işledik. Bunun bir yolu yok mu? – Vince

İlgili konular