मैं कमांड लाइन से एक MongoDB डेटाबेस कैसे गिराऊं?


854

मेरे बैश प्रॉम्प्ट से ऐसा करने का सबसे आसान तरीका क्या है?


5
इस प्रश्न को देखें: stackoverflow.com/questions/3366397/… । मोंगू खोल से इसे करना वास्तव में आसान है।
जेसी पोलाक

जवाबों:


1084

ऐशे ही:

mongo <dbname> --eval "db.dropDatabase()"

कमांड लाइन से शेल को स्क्रिप्ट करने के बारे में अधिक जानकारी यहां: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting


यह मेरे मामले में बहुत मददगार था। किसी तरह मेरे पास पुराने इंस्टॉलेशन से "मीन-डे" नाम का एक डेटाबेस था, और मोंगो शेल में "मीन-डे-रोडप्रोडेबेस" () दर्ज करने के परिणामस्वरूप "रेफ़रेंस: मीन परिभाषित नहीं होता है"। लेकिन इस जवाब में समाधान का उपयोग कर चाल चली गई। +1
केपी मैकग्रेगर

22
यदि आप एक मानव पठनीय परिणाम प्राप्त करना चाहते हैं, तो इसे इस तरह से करें:mongo <dbname> --eval "printjson(db.dropDatabase())"
Dmytro Uhnichenko

1
केपी मैकग्रेगर। आपको होना चाहिए: "माध्य-देव का उपयोग करें" + "db.dropDatabase ()"
ozma

धन्यवाद। यह है कि आप होस्ट और पोर्ट को कैसे कस्टमाइज़ कर सकते हैं: mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
क्लेमेंस

844

इसे करने का सबसे अच्छा तरीका मोंगोडब कंसोल से है:

> use mydb; 
> db.dropDatabase();

वैकल्पिक रूप से, आप mongodअपनी डेटा निर्देशिका से डेटा फ़ाइलों को रोक और हटा सकते हैं , फिर पुनरारंभ करें।

संकेत: आप डेटा फ़ाइलों को सबफ़ोल्डर में भी स्थानांतरित कर सकते हैं, और उन्हें हटा सकते हैं यदि आपको यकीन है कि आपको अब उनकी आवश्यकता नहीं है।


2
मुझे लगता है कि वह सीधे संकेत से मतलब है वह नहीं है? उस स्थिति में या तो आपको उन आदेशों के साथ एक .js फ़ाइल जनरेट करनी होगी और उसे "mongo dropdb.js" या कुछ और का उपयोग करके संकेत से आह्वान करना चाहिए या जैसा कि आप कहते हैं और फ़ाइलों को मैन्युअल रूप से हटा दें।
रेमन वैन Vliet

2
लेकिन ध्यान रखें कि आप use.js फ़ाइल में कमांड का उपयोग नहीं कर सकते हैं , आपको कंक्रीट DB से कनेक्ट करना होगा (
mongo

46
प्रो टिप: एक डेटाबेस छोड़ने के बाद, आप ~/.dbshellअपने कमांड इतिहास को खाली करने के लिए मोंगो शेल से बाहर निकल सकते हैं और अपनी फ़ाइल को हटा सकते हैं । (ऐसा करने का एक बेहतर तरीका हो सकता है - मुझे यकीन नहीं है।) मैं ऐसा इसलिए करता हूं, क्योंकि एसक्यूएल के विपरीत, डेटाबेस को गिराने के लिए मोंगो कमांड वास्तव में ड्रॉप करने के लिए डेटाबेस के नाम का संदर्भ नहीं देता है - यह बस गिरता है डेटाबेस जिसके लिए क्लाइंट वर्तमान में जुड़ा हुआ है। अपने कमांड इतिहास को साफ़ करने से आपके गलती से dropDatabaseकमांड को फिर से देखने से रोका जा सकेगा और अनजाने में दूसरा डेटाबेस गिर जाएगा।
क्रिस एलन लेन

3
यह एक स्मार्ट विचार है, @chrisallenlane। मोंगॉडब शेल कई बार एक खतरनाक उपकरण है ... :)
ममनोसिन

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

114

मुझे यह याद रखना आसान लगा:

mongo //to start the mongodb shell

show dbs //to list existing databases

use <dbname> //the <dbname> is the database you'd like to drop

db //should show <dbname> just to be sure I'm working with the right database

db.dropDatabase() //will delete the database & return { "dropped" : "<dbname>", "ok" : 1 }

113

आपको heredocs या eval की आवश्यकता नहीं है , mongoस्वयं एक दुभाषिया के रूप में कार्य कर सकता है।

#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();

फ़ाइल को निष्पादन योग्य बनाएं और उसे चलाएं।


3
ध्यान दें कि स्क्रिप्ट नाम के साथ समाप्त होना चाहिए .js, अन्यथा यह डीबी पते के रूप में व्याख्या किया जाएगा।
वेगार्ड

1
@ लेगर्ड यह सही नहीं है। आप चला रहे हैं mongo filenameजो अनावश्यक है - फ़ाइल में पहले से ही शीर्ष पंक्ति में एक दुभाषिया है। बस फ़ाइल को निष्पादन योग्य ./filename
बनाएं

@mikemaccana मुझे पता है कि, लेकिन क्या ./filenameवास्तव में चलेगा /usr/bin/env mongo filename, है ना? और इसलिए यदि filenameअंत नहीं होता है .py, तो मूंगो तर्क को चलाने के लिए स्क्रिप्ट के रूप में नहीं पहचानेगा।
वेजर्ड

"कर रहा है ।/filename वास्तव में चलेगा / usr / bin / env mongo फ़ाइल नाम, सही है?" के उत्पादन की जाँच करें ps
मिकमेकाना

@mikemaccana psकेवल यह दिखाता है कि आपके द्वारा आह्वान किए जाने के समय क्या चल रहा है ps, न execकि कॉल की श्रृंखला जो उस बिंदु तक ले जाती है और न ही कर्नेल ने फ़ाइल को लोड करने और निष्पादित करने के लिए किया है। यदि आप जानना चाहते हैं कि वास्तव में क्या चल रहा है, तो आपको एक आवरण लिखने के लिए उपयोग करना चाहिए /usr/bin/env, सेट करें कि शबंग लाइन में निष्पादन योग्य के रूप में, और फिर पूरी चीज को बंद कर दें strace
23

31

MongoDB प्रारंभ करें

डेटाबेस ड्रॉप के लिए कमांड है:

1. पहले उस डेटाबेस को चुनें जिसे आप हटाना चाहते हैं

use < database name >

2. तो इस का उपयोग करें ..

db.dropDatabase()

28

आप "हेरेडोक" का भी उपयोग कर सकते हैं:

mongo localhost/db <<EOF
db.dropDatabase()
EOF

उत्पादन में परिणाम जैसे:

mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }    
bye

यदि आप आदेशों के अधिक जटिल अनुक्रम चाहते हैं, तो मुझे इस तरह की चीजों के लिए हेरेडोक्स का उपयोग करना पसंद है।



18

यहाँ कुछ मूंगोडब शेल के उपयोग से मोंगोडब के लिए पूर्ण डिलीट ऑपरेशन का उपयोग किया गया है

संग्रह में विशेष दस्तावेज़ को हटाने के लिए :db.mycollection.remove( {name:"stack"} )

संग्रह में सभी दस्तावेजों को हटाने के लिए : db.mycollection.remove()

संग्रह हटाने के लिए : db.mycollection.drop()

डेटाबेस को हटाने के लिए : पहले उस डेटाबेस पर जाएं use mydbऔर फिर कमांड द्वारा

db.dropDatabase()

सीधे कमांड प्रॉम्प्ट या ब्लश से: mongo mydb --eval "db.dropDatabase()


15

एक टर्मिनल में निष्पादित करें:

mongo // To go to shell

show databases // To show all existing databases.

use <DATA_BASE> // To switch to the wanted database.

db.dropDatabase() // To remove the current database.

1
इस एक के रूप में एक ही जवाब है , जो एक महीने पहले दिया गया था।
दान डेस्कलेस्क्यू

10

एक और टर्मिनल विंडो खोलें और निम्नलिखित कमांड निष्पादित करें,

mongodb
use mydb
db.dropDatabase()

उस ऑपरेशन का आउटपुट निम्न की तरह दिखेगा

MAC:FOLDER USER$ mongodb
> show databases
local      0.78125GB
mydb       0.23012GB
test       0.23012GB
> use mydb
switched to db mydb
>db.dropDatabase()
{ "dropped" : "mydb", "ok" : 1 }
>

कृपया ध्यान दें कि mydbअभी भी उपयोग में है, इसलिए उस समय कोई भी इनपुट सम्मिलित करना डेटाबेस को फिर से आरंभ करेगा।


4

जावास्क्रिप्ट का उपयोग करके, आप अपने डेटाबेस को छोड़ने के लिए आसानी से एक drop_bad.js स्क्रिप्ट बना सकते हैं :

drop_bad.js बनाएं :

use bad;
db.dropDatabase();

मानगो शेल का उपयोग करके स्क्रिप्ट को बाहर निकालने के लिए टर्मिनल में 1 कमांड चलाएं:

mongo < drop_bad.js

2

आखिरकार कई तरीके हैं, सबसे अच्छा तरीका (सबसे कुशल और सबसे आसान) उपयोग कर रहा है db.dropDatabase()


2

आप कमांड प्रॉम्प्ट में, पहले कमांड का उपयोग करके मोंगोडब से कनेक्ट करें:

mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]

आप के साथ पहुँच db हो जाएगा <dbname>

पूरे डेटाबेस को छोड़ने के लिए निम्नलिखित कमांड चलाएँ:

db.dropDatabase()

-h मदद करता है, -d 'mongo --host [host-name]: [port: number] -u [username] -p [password] [dbname] --eval "db.dropDatabase (जैसे) के लिए अधिक विकल्प नहीं है। ) "`
जसनेमिल जूल

2

एक लाइनर रिमोट मोंगो डेटाबेस से सभी संग्रहों को हटा देता है

नोट का उपयोग करना चाहिए-host, (-h mongo कमांड के लिए मदद है), और -d एक विकल्प नहीं है, पासवर्ड के बाद db और कमांड का चयन करें।

mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"


0

अजगर का उपयोग कर एक MongoDB डेटाबेस छोड़ें:

import argparse

import pymongo


if __name__ == "__main__":
    """
    Drop a Database.
    """

    parser = argparse.ArgumentParser()
    parser.add_argument("--host", default='mongodb://localhost:27017',
                        help="mongodb URI [default: %(default)s]")
    parser.add_argument("--database", default=None,
                        help="database name: %(default)s]")

    args = parser.parse_args()

    client = pymongo.MongoClient(host=args.host)

    if args.database in client.list_database_names():
        client.drop_database(args.database)
        print(f"Dropped: '{args.database}'")
    else:
        print(f"Database '{args.database}' does not exist")

-1

db वर्तमान डेटाबेस नाम प्रकार दिखाएगा : db.dropDatabase ();

1- 'यूज़' कीवर्ड का उपयोग करके ड्रॉप करने के लिए डेटाबेस का चयन करें ।

2- फिर टाइप करें db.dropDatabase ();


-2

db ड्रॉप करने के लिए mongo शेल से निम्न कमांड का उपयोग करें

उपयोग ; db.dropDatabase ();


यह आदेश किस डेटाबेस को छोड़ने के लिए निर्दिष्ट करता है? एक डेटाबेस बुलाया "Auth-उन" के साथ मैंने कोशिश की > use auth-users ; db.dropDatabase()और > use auth-users; db.dropDatabase()और दोनों लौट आए[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :
श्री कैनेडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.