मैं मौजूदा नोड को बदलने के लिए Neo4JClient का उपयोग करने का प्रयास कर रहा हूं। मैं अभी भी Neo4j के साथ ताजा हूं इसलिए मुझे यकीन नहीं है कि मैं इसे सही तरीके से कर रहा हूं। क्वेरी को मौजूदा नोड पर नए नोड के सभी गुणों को अपडेट करना चाहिए।

    public static Node<VitalSignEvent> MergeVitalSignEvent(VitalSignEvent mergedEvent)
    {

        try
        {
            vsNode = DBUtils.DBService.Cypher
                .Merge($"(evt:VitalSignEvent {{ItemId: {mergedEvent.ItemId}, DateObserved: {mergedEvent.DateObserved} }})")
                .OnMatch()
                .Set("evt = merged")
                .WithParam("merged", mergedEvent)
                .Return(evt => evt.As<Node<VitalSignEvent>>())
                .Results.FirstOrDefault();
        }
        catch (Exception e)
        {
            LogException(nameof(MergeVitalSignEvent), e);
        }
        return vsNode;
    }
0
Antarr Byrd 15 मई 2017, 23:31
1
यह स्पष्ट नहीं है कि आप क्या करने की कोशिश कर रहे हैं। क्या आप अधिक विवरण प्रदान कर सकते हैं? आपका कोड एक नया नोड तभी बनाएगा जब समान पैटर्न वाला कोई मौजूदा नोड पहले से मौजूद न हो, और यह या तो पहला मौजूदा मिलान नोड या नया नोड लौटाता है। न तो "अपडेट" और न ही "प्रतिस्थापन" किया जाता है।
 – 
cybersam
15 मई 2017, 23:45
इसे मौजूदा नोड को अपडेट करना चाहते हैं। यदि कोई संपत्ति अलग है तो उसे नए नोड का मान मिलना चाहिए।
 – 
Antarr Byrd
15 मई 2017, 23:50
लेकिन अभी तक कोई "नया" नोड नहीं है। क्या आप एक नया नोड बनाने की कोशिश कर रहे हैं यदि मेल खाने वाला नोड अभी तक मौजूद नहीं है? और क्या आप मौजूदा नोड को खोजने के लिए mergedEvent.ItemId को "कुंजी" के रूप में उपयोग करना चाहते हैं, या क्या आप mergedEvent.ItemId और mergedEvent.DateObserved को एक साथ कुंजी के रूप में उपयोग करना चाहते हैं?
 – 
cybersam
16 मई 2017, 00:49
मैंने पूरी विधि के साथ प्रश्न को अपडेट कर दिया है
 – 
Antarr Byrd
16 मई 2017, 00:50
क्या आप मेरे आखिरी सवालों का जवाब दे सकते हैं?
 – 
cybersam
16 मई 2017, 00:51

1 उत्तर

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

आपको OnMatch() कॉल को हटा देना चाहिए, क्योंकि आप नए बनाए गए नोड्स के साथ-साथ मौजूदा नोड्स पर गुण सेट करना चाहते हैं।

        vsNode = DBUtils.DBService.Cypher
            .Merge($"(evt:VitalSignEvent {{ItemId: {mergedEvent.ItemId}, DateObserved: {mergedEvent.DateObserved} }})")
            .Set("evt = $merged")
            .WithParam("merged", mergedEvent)
            .Return(evt => evt.As<Node<VitalSignEvent>>())
            .Results.FirstOrDefault();
1
cybersam 16 मई 2017, 01:11