मेरा यह ग्राफ है:

A<-B->C

B एक छोटे पेड़ की जड़ है। ए और बी के बीच एक संबंध है, और बी और सी के बीच एक है।

जब मैं निम्नलिखित चलाता हूं, तो एक नोड वापस आ जाता है। यह Cypher क्वेरी A और C नोड्स को वापस क्यों नहीं करती है?

MATCH(a {name:"A"})<-[]-(rewt)-[]->(c) RETURN c

ऐसा लगता है कि उस क्वेरी के पहले आधे को रूट मिलेगा, और दूसरी छमाही में दोनों बच्चे के नोड मिलेंगे।

कुछ मिनट पहले तक, मैंने सोचा होगा कि यह तार्किक रूप से निम्नलिखित क्वेरी के समान है जो काम करता है। क्या फर्क पड़ता है?

MATCH (a {name:"A"})<-[]-(rewt)
MATCH (rewt)-[]->(c)
RETURN c

साइबरस्पेस के लिए EDIT

मैंने अपने डेटाबेस को सार कर दिया है ताकि हम अपने विशिष्ट मुद्दे पर चर्चा कर सकें। अब, हमारे पास अभी भी एक छोटा पेड़ है, लेकिन 4 नोड्स हैं जो मूल के बच्चे हैं। (क्षमा करें यह अलग है, लेकिन मैं विकसित हो रहा हूं और अपने पर्यावरण को बहुत अधिक नहीं बदलना चाहता।)

यह क्वेरी सभी 4:

match(a)<-[]-(b:ROOT)-[]->(c) return c

उनमें से एक का नाम "dddd" है ...

match(a {name"dddd"})<-[]-(b:ROOT)-[]->(c) return c

यह क्वेरी उनमें से केवल तीन रिटर्न करती है। "dddd" शामिल नहीं है। हे भगवान।

साइबरसम के विशिष्ट प्रश्न का उत्तर देने के लिए, यह प्रश्न:

MATCH (a {name:"dddd"})<--(rewt:CODE_ROOT)
MATCH (rewt)-->(c)
RETURN a = c;

चार पंक्तियाँ लौटाता है। मान true, false, false, false हैं

0
Tony Ennis 2 पद 2015, 16:28

3 जवाब

सबसे बढ़िया उत्तर

[अपडेट]

आपके 2 प्रश्नों में अंतर है। एक MATCH खंड सभी डुप्लिकेट संबंधों को फ़िल्टर करेगा।

इसलिए, आपकी पहली क्वेरी उन सभी मैचों को फ़िल्टर कर देगी, जहाँ बाएँ-दाएँ संबंध, दाएँ-बाएँ संबंध के समान हैं:

MATCH(a {name:"A"})<--(rewt)-->(c)
RETURN c;

आपकी दूसरी क्वेरी 2 रिश्तों को समान करने की अनुमति देती है, क्योंकि रिश्ते 2 अलग-अलग MATCH खंडों से पाए जाते हैं:

MATCH (a {name:"A"})<--(rewt)
MATCH (rewt)-->(c)
RETURN c;

यदि मैं सही हूं, तो निम्न क्वेरी N पंक्तियों (जहां N} rewt से आउटगोइंग रिलेशनशिप की संख्या है) वापस आनी चाहिए और केवल एक मान true होना चाहिए:

MATCH (a {name:"A"})<--(rewt)
MATCH (rewt)-->(c)
RETURN a = c;
2
cybersam 2 पद 2015, 19:43

दोनों मेरे लिए ठीक काम करते हैं। मैंने 2.3.0 समुदाय पर कोशिश की है। क्या आपको अपनी क्रिएट कमांड पोस्ट करने का मन है?

0
Augusto Chaves 2 पद 2015, 15:15

प्रत्येक MATCH खंड में, प्रत्येक संबंध केवल एक बार मिलान किया जाएगा। http://neo4j.com/docs/stable/cypherdoc-uniqueness.html संदर्भ के लिए।

इस संबंधित प्रश्न को भी देखें: साइरो में अल्पविराम क्या करता है क्वेरी करें;

0
Community 23 मई 2017, 10:27