2016-03-30 22 views
0

jqassistant tarafından oluşturduğum grafiğim için bir sorgu bulmaya çalışıyorum. Ama ben sadece anlayamıyorum. Benim veri şöyle görünür:Neo4j Sub seçimli Cipher sorgusu

Ben bir objeyi temsil eden çeşitli düğümler: (Her satır bir düğüm) benim sorgu dönmelidir Ne

 
name  version 
=================== 
projectOne  001 
projectTwo  001 
projectOne  002 
projectTwo  002 
projectOne  009 
projectOne  004 
projectOne  029 
projectTwo  003 
projectTwo  010 

iki düğüm geçerli:

 
projectOne 029 
projectTwo 010 

yüzden Bu düğümlerin en yeni sürümünü isim ile ayırt etmek istiyorum. DISTINCT ve ORDER BY'i nasıl kullanacağımı biliyorum ama istediğim çıktıyı elde etmek için bu ikisini nasıl birleştireceğimi bilemiyorum. Herhangi bir fikir?

Son hedefim en yeni sürümleri işaretlemektir. Daha sonra, en yeni olarak işaretlenmemiş eserler ile ilgili her yeni eseri işaret etmek istiyorum.

Buna ulaşmak için başka bir olası çözüm de bir öncekiler zinciri oluşturmak olabilir. Sonra gelen selefi olmayan her eser en son versiyon olacaktır. Ama bu benim en yeni olanları seçerken de aynı problemi ima ediyor.

cevap

2

varsayarsak ilgili tüm düğümler Foo etiket var, sorgu çok basit:

MATCH (n:Foo) 
RETURN n.name, MAX(n.version); 

MAX toplama fonksiyonu her biri farklı isim için en üst sürümü bulur.

+0

Oh. Oldukça kolay görünüyor. Bu akşam sonra deneyeceğim ve eğer işe yararsa cevabı işaretleyeceğim. Şimdiden teşekkürler. – romixch

+0

Awsome! Teşekkürler! – romixch

+0

Güzel ve kolay bir çözüm! Bunun yalnızca, belgelerinizin sürüm niteliğinin doğal bir düzen oluşturması durumunda işe yaradığını unutmayın, yani 1.10.0 gibi başka bir sürüm düzeni kullanırsanız işler bozulabilir. –