जैसा कि नीचे दिया गया है, मेरे पास नियोमोडेल में neo4j नोड और रिलेशनशिप स्कीमा है। अब मुझे एक फंक्शन बनाने की जरूरत है ताकि वह पर्सनरेल का यूआईडी ले सके और इस रिश्ते से जुड़े दो व्यक्तियों के बीच के रिश्ते को हटा सके। मुझे यह दस्तावेज़ीकरण में नहीं मिला: https://neomodel.readthedocs.io/en/latest /

class PersonRel(StructuredRel):
    uid = StringProperty()
    created_at = DateTimeProperty(
        default=lambda: datetime.now(pytz.utc)
    )
    weight = FloatProperty()
    direction = StringProperty()


class PersonNode(StructuredNode):
    uid = UniqueIdProperty()
    label = StringProperty(required=True)
    description = StringProperty()
    related_to = RelationshipFrom("PersonNode", "related_to", model=PersonRel)
    created_at = DateTimeProperty(
        default=lambda: datetime.now(pytz.utc)
    )
1
Kshitij Mittal 22 जुलाई 2019, 09:00

2 जवाब

मैं Py2Neo का उपयोग करता हूं, इसलिए मैं नियोमॉडल से परिचित नहीं हूं। यदि आपको संपत्ति द्वारा संबंध खोजने और हटाने का कोई विकल्प नहीं मिलता है, तो आप इसे स्टैंडअलोन साइफर क्वेरी के साथ हटाना चुन सकते हैं।

आप Neomodel में स्टैंडअलोन साइबर क्वेरी निष्पादित कर सकते हैं जैसे:

db.cypher_query(query, params)

आपकी डिलीट क्वेरी इस तरह होगी:

MATCH ()-[rel]-() WHERE rel.uid={{uid}} DELETE rel
1
Raj 22 जुलाई 2019, 13:08
उत्तर के लिए धन्यवाद, इससे बहुत मदद मिली। लेकिन मुझे कुछ बदलाव करने पड़े, क्योंकि क्वेरी वैसी नहीं चली जैसी वह है। तो, मैं उत्तर अलग से पोस्ट कर रहा हूं, ताकि यह थोड़ा और स्पष्ट हो।
 – 
Kshitij Mittal
22 जुलाई 2019, 13:04

जैसा कि राज ने बताया, नियोमोडेल में किसी भी कच्चे साइबर क्वेरी को भी लिखना संभव है। हालांकि, प्रलेखन में, प्रक्रिया स्पष्ट रूप से वर्णित नहीं है।

निम्नलिखित कोड ने अंततः मुझे आवश्यक परिणाम प्राप्त करने में मदद की:

from neomodel import db as neodb
neodb.cypher_query("MATCH ()-[rel {uid:{uid}}]-() delete rel", {"uid": rel_id})

ध्यान देने योग्य बात यह है कि पैरा को एक शब्दकोश के रूप में पारित करने की आवश्यकता होती है, जिसका दस्तावेज़ीकरण में उल्लेख नहीं किया गया है। साथ ही, {uid:{uid}} - क्वेरी के इस हिस्से में, आंतरिक यूआईडी, जो फिर से कर्ली ब्रेसिज़ है, एक वैरिएबल है जिसे पैराम्स में पास किया जाना चाहिए। लेकिन बाहरी ब्रेसिज़ साइफर सिंटैक्स का हिस्सा हैं, इसलिए नियोमोडेल कोड इसे एक चर के रूप में नहीं मानता है। साथ ही, {uid} के आसपास उद्धरण जोड़ने की कोई आवश्यकता नहीं है।

0
Kshitij Mittal 22 जुलाई 2019, 13:10