Saya menemukan pertanyaan ini tentang memeriksa bahwa tidak ada hubungan keluar dari label yang diberikan pada sebuah node , dan yang ini untuk memeriksa jumlah hubungan keluar dengan properti tertentu, tetapi yang perlu saya lakukan adalah mendapatkan simpul yang tidak memiliki hubungan yang diberikan properti ditetapkan. Saya yakin saya membuat ini lebih sulit untuk diri saya sendiri!

Apa yang saya miliki sejauh ini adalah ini:

MATCH (n:Node)-[r:WEIGHTING]->()
WHERE NOT(ANY(rel IN r WHERE EXISTS(r.PROP)))
RETURN z

Tapi, jelas, r pada titik ini adalah hubungan tunggal, bukan kumpulan hubungan. Saya berpikir saya perlu melibatkan klausa WITH, tetapi saya sangat tidak mendalam!

Bagaimana cara mendapatkan set Node yang tidak memiliki hubungan WEIGHTING keluar yang memiliki properti PROP?

Saya harap itu cukup detail - maaf jika tidak jelas!

Terima kasih banyak, Tom

1
Tom 16 Maret 2017, 18:12

2 jawaban

Jawaban Terbaik

Anda dapat mencapainya seperti ini:

MATCH (n:Node)-[r:WEIGHTING]->()
WITH n, collect(r.PROP) AS props
WHERE size(props) = 0
RETURN n

Atau :

MATCH (n:Node)-[r:WEIGHTING]->()
WITH n, collect(r) AS rs
WHERE NONE ( x IN rs WHERE EXISTS(x.PROP) )
RETURN n
1
Christophe Willemsen 16 Maret 2017, 15:27

Dengan Neo4j cenderung ada beberapa cara untuk melakukan apa yang Anda butuhkan. Satu kueri alternatif dapat berupa:

MATCH (n:Node)
// only need the next WHERE clause if a WEIGHTING relationship is required
WHERE SIZE((n)-[:WEIGHTING]->()) > 0
OPTIONAL MATCH (n)-[r:WEIGHTING]->()
WHERE EXISTS (r.PROP)
WITH n 
WHERE r is null
RETURN n
1
InverseFalcon 16 Maret 2017, 17:45