MERGE क्लॉज में कॉमेस जैसे MATCH क्लॉज में होते हैं?

Aug 18 2020

निओ 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)"
                     ^

अगर मैं सही तरीके से समझूं, तो मर्ज एक स्तर का उभार प्रदान करता है। लेकिन क्या मैच की तुलना में मिलान क्षमता में अधिक प्रतिबंधित है? मुझे जटिल गैर-रेखीय पैटर्न कैसे मिलाएं जो अल्पविराम पृथक्करण की आवश्यकता है ?

जवाब

1 cybersam Aug 18 2020 at 18:36

पूरे 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