MERGE क्लॉज में कॉमेस जैसे MATCH क्लॉज में होते हैं?
निओ 4 जे 4 में निम्न काम करता है:
MATCH (a)-->(b)<--(c), (b)-->(d)
RETURN a
लेकिन निम्नलिखित एक त्रुटि देता है:
MERGE (a)-->(b)<--(c), (b)-->(d)
RETURN a
त्रुटि पाठ: Neo.ClientError.Statement.SyntaxError
Invalid input ',': expected whitespace, a relationship pattern, ON, FROM GRAPH, USE GRAPH, CONSTRUCT, LOAD CSV, START, MATCH, UNWIND, MERGE, CREATE UNIQUE, CREATE, SET, DELETE, REMOVE, FOREACH, WITH, CALL, RETURN, UNION, ';' or end of input (line 1, column 22 (offset: 21))
"MERGE (a)-->(b)<--(c), (b)-->(d)"
^
अगर मैं सही तरीके से समझूं, तो मर्ज एक स्तर का उभार प्रदान करता है। लेकिन क्या मैच की तुलना में मिलान क्षमता में अधिक प्रतिबंधित है? मुझे जटिल गैर-रेखीय पैटर्न कैसे मिलाएं जो अल्पविराम पृथक्करण की आवश्यकता है ?
जवाब
पूरे MERGE
करता है, तो पैटर्न बनाया जाएगा किसी भी स्वरूप में आइटम अभी तक मौजूद नहीं है। इसलिए, सुरक्षित होने के लिए, आपको हमेशा यह सुनिश्चित करना चाहिए कि हर MERGE
पैटर्न में केवल एक आइटम हो जो मौजूद न हो।
यही कारण है कि यह केवल MERGE
एक शब्द के साथ पैटर्न का समर्थन करने के लिए समझ में आता है ।
उदाहरण के लिए, इसके बजाय (जो कि कानूनी साइपर नहीं है, वैसे भी):
MERGE
(a:Foo {id: 'a'})-[:BAR]->(b:Foo {id: 'b'})<-[:BAR]-(c:Foo {id: 'c'}),
(b)-[:BAR]->(d:Foo {id: 'd'})
RETURN a
आपको वास्तव में ऐसा करना चाहिए:
MERGE (a:Foo {id: 'a'})
MERGE (b:Foo {id: 'b'})
MERGE (c:Foo {id: 'c'})
MERGE (d:Foo {id: 'd'})
MERGE (a)-[:BAR]->(b)
MERGE (b)<-[:BAR]-(c)
MERGE (b)-[:BAR]->(d)
RETURN a