neo4j

2014-04-21 11 views
5

में कोई भेजे रिश्ते के साथ नोड को खोजने के लिए कैसे मैं 2 नोड प्रकार हो रहा है की सुविधा देता है प्रकार 'विद्यार्थी' और की कहते हैं, 'टीचर'neo4j

Student have {id, name}. 
Teacher have {id, name}. 

छात्र के रूप में 'यह सिखाती है' क्लास नोड के साथ वैकल्पिक संबंध हो सकता है।

(t:Teacher)-[r:TEACHES]->(c:Student). 

[r:TEACHES] - Optional relationship. (present or may not present) 

मैं "छात्र" नोड्स ढूंढना चाहता हूं जिनके पास शिक्षक नहीं है। i.e कोई भी आने वाला रिश्ते नहीं है "TEACHES"

कृपया मदद करें।

उत्तर

4

यहां एक सरल डेटा सेटअप है, नीचे की क्वेरी के साथ आपको अपनी समस्या को हल करने की आवश्यकता है। अनिवार्य रूप से, आप उन स्थितियों के लिए पूछना चाहते हैं जहां एक रिश्ता मौजूद नहीं है। यहां वाक्यविन्यास neo4j 2.0 के लिए है, इसलिए पुराने संस्करणों के लिए उत्तर थोड़ा अलग होगा।

neo4j-sh (?)$ create (t:Teacher {name:"Bob"})-[r:TEACHES]->(s:Student {name:"Mary"}); 
+-------------------+ 
| No data returned. | 
+-------------------+ 
Nodes created: 2 
Relationships created: 1 
Properties set: 2 
Labels added: 2 
19 ms 

neo4j-sh (?)$ create (t:Teacher {name:"Mark"}); 
+-------------------+ 
| No data returned. | 
+-------------------+ 
Nodes created: 1 
Properties set: 1 
Labels added: 1 
5 ms 

neo4j-sh (?)$ MATCH (s:Student) WHERE NOT (s)<-[:TEACHES]-(:Teacher) RETURN s 
+0

मैं "छात्र" नोड्स ढूंढना चाहता था जिनके पास शिक्षक नहीं है। मदद के लिए धन्यवाद। –

+0

बस क्वेरी को विपरीत दिशा में चलाएं: मैच (एस: छात्र) जहां नहीं है <- [: TEACHES] -() वापसी एस; – FrobberOfBits

1

मुझे इसका परिणाम मिला। पहले छात्र मानदंड से मेल खाते हैं और फिर रिश्ते को शून्य

MATCH (s:Student) 
OPTIONAL MATCH (t:Teacher)-[r:TEACHES]->(s) 
WITH s,r 
WHERE r IS NULL 
RETURN s.name 
+0

आप इस प्रश्न को प्रोफाइल कर सकते हैं और वेस की तुलना कर सकते हैं, मुझे लगता है कि वह शायद अधिक सरल है (और मैं 'शिक्षक' लेबल छोड़ दूंगा जबतक कि आपके पास गैर-शिक्षक नोड्स न हों- ': [TEACH] -> 'छात्र -nodes)। – jjaderberg

9

मुझे लगता है कि आप इस तरह के पैटर्न की तलाश में हैं।

MATCH (s:Student) 
WHERE NOT (s)<-[:TEACHES]-(:Teacher) 
RETURN s 

 संबंधित मुद्दे