Neo4j 1.8 में सभी नोड्स और रिश्तों को हटा दें


92

मुझे पता है कि यह प्रश्न
मेरे शोध के लिए पहले से ही कई लोगों द्वारा पूछा गया है , यहां कुछ प्रश्न पहले पूछे गए हैं

  1. कैसे neo4j ग्राफ में सभी रिश्तों को हटाने के लिए?
  2. https://groups.google.com/forum/#!topic/neo4j/lgIaESPgUgE

लेकिन आखिरकार, अभी भी हमारी समस्याओं को हल नहीं कर सकता है,
हम बस "सभी" नोड्स और "सभी" रिश्तों को हटाना चाहते हैं

यहां छवि विवरण दर्ज करें

मान लें कि "ALL" देख सकते हैं कि 0 नोड्स 0 प्रॉपर्टीज़ और 0 रिलेशनशिप्स बचे हैं

यह वह स्क्रीनशॉट है जिसे मैंने फोरम द्वारा सुझाए गए डिलीट "ALL" को निष्पादित करने के बाद लिया था

मेरा सवाल अब भी वही है, neo4j में सभी नोड्स और सभी रिश्तों को कैसे हटाएं

जवाबों:


246

2.3.0 तक और 3.3.0 तक

MATCH (n)
DETACH DELETE n

डॉक्स

पूर्व 2.3.0

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

डॉक्स


2
Neo4j डॉक्स में यह नमूना हालांकि कहता है: "यह क्वेरी बड़ी मात्रा में डेटा हटाने के लिए नहीं है, लेकिन छोटे उदाहरण डेटा सेट के साथ खेलने पर अच्छा लगता है।" आश्चर्य है कि अगर MATCH () - [r] - () DELETE r करना बेहतर है और फिर MATCH करें (n) DELETE n
जॉर्ज बीरबिलिस

2
@GeorgeBirbilis, बड़ी मात्रा में डेटा के लिए ऐसा करने के लिए ऑपरेशन को कई लेन-देन पर तोड़ा जाना चाहिए और पुन: प्रयास करने वाले तंत्र को लागू करना होगा।
बॉब बी।

1
यकीन है कि पुन: प्रयास की जरूरत है या नहीं, लेकिन यह करने के लिए पुनरावृत्ति रास्ता के लिए, पर स्टीफन Armbruster द्वारा जबाब देख नहीं stackoverflow.com/questions/29711757/... (मैं भी यह मेरी ब्लॉग पोस्ट लिंक के अंत में उल्लेख मैं अलग जवाब में है)
जॉर्ज बीरबिलिस

2.3 उत्तर-क्वेरी मेरे लिए काम नहीं करती है। @GeorgeBirbilis सुझाव देता है।
aliteralmind

@aliteralmind को neo4j.com/docs/2.3.0/query-delete.html से देखते हुए कि शायद यह मुद्दा है कि) के बाद एक नई रूपरेखा की जरूरत है या कम से कम एक अंतरिक्ष चार, क्योंकि वर्तमान में यह लिखता है ...) DETACH जो दिखता है टाइपो (और शायद उसी सीमा पर डीटैक DELETE रखने के लिए भी, लेकिन निश्चित नहीं है कि यदि आवश्यक हो)। नोट लेख अभी भी कहता है "यह क्वेरी बड़ी मात्रा में डेटा को हटाने के लिए नहीं है, लेकिन जब छोटे उदाहरण डेटा सेट के साथ खेल रहे हों तो अच्छा है।"
जॉर्ज बिरबिलिस

6

आप शायद इसे सही कर रहे हैं, केवल डैशबोर्ड केवल ली गई उच्च आईडी दिखाता है, और इस प्रकार "सक्रिय" नोड्स, संबंधों की संख्या, हालांकि कोई नहीं है। यह सिर्फ जानकारीपूर्ण है।

यह सुनिश्चित करने के लिए कि आपके पास एक खाली ग्राफ़ है, इस कमांड को चलाएं:

START n=node(*) return count(n);
START r=rel(*) return count(r);

यदि दोनों आपको 0 देते हैं, तो आपका विलोप succesfull था।


हाँ, यह सच है, लेकिन डैशबोर्ड न तो उच्च और न ही उच्चतम आईडी दिखाता है
ह्यूई टैन

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

5

एक बड़े डेटाबेस के लिए आपको या तो डेटाबेस को डिस्क से निकालना चाहिए (आपके द्वारा इंजन को पहले बंद करने के बाद मुझे लगता है) या साइप्रो में कुछ इस तरह उपयोग करें:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
WITH n,r LIMIT 50000
DELETE n,r
RETURN count(n) as deletedNodesCount

देखें https://zoomicon.wordpress.com/2015/04/18/howto-delete-all-nodes-and-relationships-from-neo4j-graph-database/ कुछ और जानकारी के लिए मैं इस पर विभिन्न उत्तरों के साथ इकट्ठा हुआ हूं


2

Neo4j उन नोड्स को हटा नहीं सकता जिनका संबंध है। नोड्स को हटाने से पहले आपको संबंधों को हटाना होगा।

लेकिन, यह साधारण चीयर के साथ "ALL" नोड्स और "ALL" रिश्तों को हटाने का सरल तरीका है। यह कोड है:

MATCH (n) डीटैच DELETE n

-> DETACH DELETE मिलान द्वारा सभी नोड्स और संबंधों को हटा देगा


0

यदि नोड का नाम उदाहरण के लिए है: abcd तो नीचे क्वेरी काम करेगी:

MATCH (n:abcd)
DETACH DELETE n

यह केवल "abcd" और इसके सभी रिलेशन-शिप्स के साथ नोड को हटा देगा।



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.